xref: /openbmc/linux/drivers/usb/musb/Kconfig (revision 7fe2f639)
1#
2# USB Dual Role (OTG-ready) Controller Drivers
3# for silicon based on Mentor Graphics INVENTRA designs
4#
5
6comment "Enable Host or Gadget support to see Inventra options"
7	depends on !USB && USB_GADGET=n
8
9# (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
10config USB_MUSB_HDRC
11	depends on (USB || USB_GADGET)
12	depends on (ARM || (BF54x && !BF544) || (BF52x && !BF522 && !BF523))
13	select NOP_USB_XCEIV if (ARCH_DAVINCI || MACH_OMAP3EVM || BLACKFIN)
14	select TWL4030_USB if MACH_OMAP_3430SDP
15	select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA
16	select USB_OTG_UTILS
17	tristate 'Inventra Highspeed Dual Role Controller (TI, ADI, ...)'
18	help
19	  Say Y here if your system has a dual role high speed USB
20	  controller based on the Mentor Graphics silicon IP.  Then
21	  configure options to match your silicon and the board
22	  it's being used with, including the USB peripheral role,
23	  or the USB host role, or both.
24
25	  Texas Instruments familiies using this IP include DaVinci
26	  (35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010.
27
28	  Analog Devices parts using this IP include Blackfin BF54x,
29	  BF525 and BF527.
30
31	  If you do not know what this is, please say N.
32
33	  To compile this driver as a module, choose M here; the
34	  module will be called "musb-hdrc".
35
36choice
37	prompt "Platform Glue Layer"
38	depends on USB_MUSB_HDRC
39
40config USB_MUSB_DAVINCI
41	tristate "DaVinci"
42	depends on ARCH_DAVINCI_DMx
43
44config USB_MUSB_DA8XX
45	tristate "DA8xx/OMAP-L1x"
46	depends on ARCH_DAVINCI_DA8XX
47
48config USB_MUSB_TUSB6010
49	tristate "TUSB6010"
50	depends on ARCH_OMAP
51
52config USB_MUSB_OMAP2PLUS
53	tristate "OMAP2430 and onwards"
54	depends on ARCH_OMAP2PLUS
55
56config USB_MUSB_AM35X
57	tristate "AM35x"
58	depends on ARCH_OMAP
59
60config USB_MUSB_BLACKFIN
61	tristate "Blackfin"
62	depends on (BF54x && !BF544) || (BF52x && ! BF522 && !BF523)
63
64config USB_MUSB_UX500
65	tristate "U8500 and U5500"
66	depends on (ARCH_U8500 && AB8500_USB) || (ARCH_U5500)
67
68endchoice
69
70choice
71	prompt "Driver Mode"
72	depends on USB_MUSB_HDRC
73	help
74	  Dual-Role devices can support both host and peripheral roles,
75	  as well as a the special "OTG Device" role which can switch
76	  between both roles as needed.
77
78# use USB_MUSB_HDRC_HCD not USB_MUSB_HOST to #ifdef host side support;
79# OTG needs both roles, not just USB_MUSB_HOST.
80config USB_MUSB_HOST
81	depends on USB
82	bool "USB Host"
83	help
84	  Say Y here if your system supports the USB host role.
85	  If it has a USB "A" (rectangular), "Mini-A" (uncommon),
86	  or "Mini-AB" connector, it supports the host role.
87	  (With a "Mini-AB" connector, you should enable USB OTG.)
88
89# use USB_GADGET_MUSB_HDRC not USB_MUSB_PERIPHERAL to #ifdef peripheral
90# side support ... OTG needs both roles
91config USB_MUSB_PERIPHERAL
92	depends on USB_GADGET
93	bool "USB Peripheral (gadget stack)"
94	select USB_GADGET_MUSB_HDRC
95	help
96	  Say Y here if your system supports the USB peripheral role.
97	  If it has a USB "B" (squarish), "Mini-B", or "Mini-AB"
98	  connector, it supports the peripheral role.
99	  (With a "Mini-AB" connector, you should enable USB OTG.)
100
101config USB_MUSB_OTG
102	depends on USB && USB_GADGET && PM && EXPERIMENTAL
103	bool "Both host and peripheral:  USB OTG (On The Go) Device"
104	select USB_GADGET_MUSB_HDRC
105	select USB_OTG
106	help
107	   The most notable feature of USB OTG is support for a
108	   "Dual-Role" device, which can act as either a device
109	   or a host.  The initial role choice can be changed
110	   later, when two dual-role devices talk to each other.
111
112	   At this writing, the OTG support in this driver is incomplete,
113	   omitting the mandatory HNP or SRP protocols.  However, some
114	   of the cable based role switching works.  (That is, grounding
115	   the ID pin switches the controller to host mode, while leaving
116	   it floating leaves it in peripheral mode.)
117
118	   Select this if your system has a Mini-AB connector, or
119	   to simplify certain kinds of configuration.
120
121	   To implement your OTG Targeted Peripherals List (TPL), enable
122	   USB_OTG_WHITELIST and update "drivers/usb/core/otg_whitelist.h"
123	   to match your requirements.
124
125endchoice
126
127# enable peripheral support (including with OTG)
128config USB_GADGET_MUSB_HDRC
129	bool
130	depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG)
131#	default y
132#	select USB_GADGET_DUALSPEED
133#	select USB_GADGET_SELECTED
134
135# enables host support (including with OTG)
136config USB_MUSB_HDRC_HCD
137	bool
138	depends on USB_MUSB_HDRC && (USB_MUSB_HOST || USB_MUSB_OTG)
139	select USB_OTG if USB_GADGET_MUSB_HDRC
140	default y
141
142
143config MUSB_PIO_ONLY
144	bool 'Disable DMA (always use PIO)'
145	depends on USB_MUSB_HDRC
146	default USB_MUSB_TUSB6010 || USB_MUSB_DA8XX || USB_MUSB_AM35X
147	help
148	  All data is copied between memory and FIFO by the CPU.
149	  DMA controllers are ignored.
150
151	  Do not select 'n' here unless DMA support for your SOC or board
152	  is unavailable (or unstable).  When DMA is enabled at compile time,
153	  you can still disable it at run time using the "use_dma=n" module
154	  parameter.
155
156config USB_UX500_DMA
157	bool
158	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
159	default USB_MUSB_UX500
160	help
161	  Enable DMA transfers on UX500 platforms.
162
163config USB_INVENTRA_DMA
164	bool
165	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
166	default USB_MUSB_OMAP2PLUS || USB_MUSB_BLACKFIN
167	help
168	  Enable DMA transfers using Mentor's engine.
169
170config USB_TI_CPPI_DMA
171	bool
172	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
173	default USB_MUSB_DAVINCI
174	help
175	  Enable DMA transfers when TI CPPI DMA is available.
176
177config USB_TUSB_OMAP_DMA
178	bool
179	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
180	depends on USB_MUSB_TUSB6010
181	depends on ARCH_OMAP
182	default y
183	help
184	  Enable DMA transfers on TUSB 6010 when OMAP DMA is available.
185
186