xref: /openbmc/linux/drivers/usb/gadget/udc/Kconfig (revision c0c74acb)
1#
2# USB Gadget support on a system involves
3#    (a) a peripheral controller, and
4#    (b) the gadget driver using it.
5#
6# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
7#
8#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
9#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
10#  - Some systems have both kinds of controllers.
11#
12# With help from a special transceiver and a "Mini-AB" jack, systems with
13# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
14#
15
16#
17# USB Peripheral Controller Support
18#
19# The order here is alphabetical, except that integrated controllers go
20# before discrete ones so they will be the initial/default value:
21#   - integrated/SOC controllers first
22#   - licensed IP used in both SOC and discrete versions
23#   - discrete ones (including all PCI-only controllers)
24#   - debug/dummy gadget+hcd is last.
25#
26menu "USB Peripheral Controller"
27
28#
29# Integrated controllers
30#
31
32config USB_AT91
33	tristate "Atmel AT91 USB Device Port"
34	depends on ARCH_AT91
35	depends on OF || COMPILE_TEST
36	help
37	   Many Atmel AT91 processors (such as the AT91RM2000) have a
38	   full speed USB Device Port with support for five configurable
39	   endpoints (plus endpoint zero).
40
41	   Say "y" to link the driver statically, or "m" to build a
42	   dynamically linked module called "at91_udc" and force all
43	   gadget drivers to also be dynamically linked.
44
45config USB_LPC32XX
46	tristate "LPC32XX USB Peripheral Controller"
47	depends on ARCH_LPC32XX && I2C
48	select USB_ISP1301
49	help
50	   This option selects the USB device controller in the LPC32xx SoC.
51
52	   Say "y" to link the driver statically, or "m" to build a
53	   dynamically linked module called "lpc32xx_udc" and force all
54	   gadget drivers to also be dynamically linked.
55
56config USB_ATMEL_USBA
57	tristate "Atmel USBA"
58	depends on ((AVR32 && !OF) || ARCH_AT91)
59	help
60	  USBA is the integrated high-speed USB Device controller on
61	  the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
62
63	  The fifo_mode parameter is used to select endpoint allocation mode.
64	  fifo_mode = 0 is used to let the driver autoconfigure the endpoints.
65	  In this case 2 banks are allocated for isochronous endpoints and
66	  only one bank is allocated for the rest of the endpoints.
67
68	  fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration
69	  allowing the usage of ep1 - ep6
70
71	  fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes)
72	  configuration allowing the usage of ep1 - ep3
73
74	  fifo_mode = 3 is a balanced performance configuration allowing the
75	  the usage of ep1 - ep8
76
77config USB_BCM63XX_UDC
78	tristate "Broadcom BCM63xx Peripheral Controller"
79	depends on BCM63XX
80	help
81	   Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
82	   high speed USB Device Port with support for four fixed endpoints
83	   (plus endpoint zero).
84
85	   Say "y" to link the driver statically, or "m" to build a
86	   dynamically linked module called "bcm63xx_udc".
87
88config USB_FSL_USB2
89	tristate "Freescale Highspeed USB DR Peripheral Controller"
90	depends on FSL_SOC || ARCH_MXC
91	help
92	   Some of Freescale PowerPC and i.MX processors have a High Speed
93	   Dual-Role(DR) USB controller, which supports device mode.
94
95	   The number of programmable endpoints is different through
96	   SOC revisions.
97
98	   Say "y" to link the driver statically, or "m" to build a
99	   dynamically linked module called "fsl_usb2_udc" and force
100	   all gadget drivers to also be dynamically linked.
101
102config USB_FUSB300
103	tristate "Faraday FUSB300 USB Peripheral Controller"
104	depends on !PHYS_ADDR_T_64BIT && HAS_DMA
105	help
106	   Faraday usb device controller FUSB300 driver
107
108config USB_FOTG210_UDC
109	depends on HAS_DMA
110	tristate "Faraday FOTG210 USB Peripheral Controller"
111	help
112	   Faraday USB2.0 OTG controller which can be configured as
113	   high speed or full speed USB device. This driver supppors
114	   Bulk Transfer so far.
115
116	   Say "y" to link the driver statically, or "m" to build a
117	   dynamically linked module called "fotg210_udc".
118
119config USB_GR_UDC
120       tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver"
121       depends on HAS_DMA
122       help
123          Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB
124	  VHDL IP core library.
125
126config USB_OMAP
127	tristate "OMAP USB Device Controller"
128	depends on ARCH_OMAP1
129	depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3)
130	help
131	   Many Texas Instruments OMAP processors have flexible full
132	   speed USB device controllers, with support for up to 30
133	   endpoints (plus endpoint zero).  This driver supports the
134	   controller in the OMAP 1611, and should work with controllers
135	   in other OMAP processors too, given minor tweaks.
136
137	   Say "y" to link the driver statically, or "m" to build a
138	   dynamically linked module called "omap_udc" and force all
139	   gadget drivers to also be dynamically linked.
140
141config USB_PXA25X
142	tristate "PXA 25x or IXP 4xx"
143	depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
144	depends on HAS_IOMEM
145	help
146	   Intel's PXA 25x series XScale ARM-5TE processors include
147	   an integrated full speed USB 1.1 device controller.  The
148	   controller in the IXP 4xx series is register-compatible.
149
150	   It has fifteen fixed-function endpoints, as well as endpoint
151	   zero (for control transfers).
152
153	   Say "y" to link the driver statically, or "m" to build a
154	   dynamically linked module called "pxa25x_udc" and force all
155	   gadget drivers to also be dynamically linked.
156
157# if there's only one gadget driver, using only two bulk endpoints,
158# don't waste memory for the other endpoints
159config USB_PXA25X_SMALL
160	depends on USB_PXA25X
161	bool
162	default n if USB_ETH_RNDIS
163	default y if USB_ZERO
164	default y if USB_ETH
165	default y if USB_G_SERIAL
166
167config USB_R8A66597
168	tristate "Renesas R8A66597 USB Peripheral Controller"
169	depends on HAS_DMA
170	help
171	   R8A66597 is a discrete USB host and peripheral controller chip that
172	   supports both full and high speed USB 2.0 data transfers.
173	   It has nine configurable endpoints, and endpoint zero.
174
175	   Say "y" to link the driver statically, or "m" to build a
176	   dynamically linked module called "r8a66597_udc" and force all
177	   gadget drivers to also be dynamically linked.
178
179config USB_RENESAS_USBHS_UDC
180	tristate 'Renesas USBHS controller'
181	depends on USB_RENESAS_USBHS && HAS_DMA
182	help
183	   Renesas USBHS is a discrete USB host and peripheral controller chip
184	   that supports both full and high speed USB 2.0 data transfers.
185	   It has nine or more configurable endpoints, and endpoint zero.
186
187	   Say "y" to link the driver statically, or "m" to build a
188	   dynamically linked module called "renesas_usbhs" and force all
189	   gadget drivers to also be dynamically linked.
190
191config USB_RENESAS_USB3
192	tristate 'Renesas USB3.0 Peripheral controller'
193	depends on ARCH_RENESAS || COMPILE_TEST
194	help
195	   Renesas USB3.0 Peripheral controller is a USB peripheral controller
196	   that supports super, high, and full speed USB 3.0 data transfers.
197
198	   Say "y" to link the driver statically, or "m" to build a
199	   dynamically linked module called "renesas_usb3" and force all
200	   gadget drivers to also be dynamically linked.
201
202config USB_PXA27X
203	tristate "PXA 27x"
204	depends on HAS_IOMEM
205	help
206	   Intel's PXA 27x series XScale ARM v5TE processors include
207	   an integrated full speed USB 1.1 device controller.
208
209	   It has up to 23 endpoints, as well as endpoint zero (for
210	   control transfers).
211
212	   Say "y" to link the driver statically, or "m" to build a
213	   dynamically linked module called "pxa27x_udc" and force all
214	   gadget drivers to also be dynamically linked.
215
216config USB_S3C2410
217	tristate "S3C2410 USB Device Controller"
218	depends on ARCH_S3C24XX
219	help
220	  Samsung's S3C2410 is an ARM-4 processor with an integrated
221	  full speed USB 1.1 device controller.  It has 4 configurable
222	  endpoints, as well as endpoint zero (for control transfers).
223
224	  This driver has been tested on the S3C2410, S3C2412, and
225	  S3C2440 processors.
226
227config USB_S3C2410_DEBUG
228	bool "S3C2410 udc debug messages"
229	depends on USB_S3C2410
230
231config USB_S3C_HSUDC
232	tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
233	depends on ARCH_S3C24XX
234	help
235	  Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
236	  integrated with dual speed USB 2.0 device controller. It has
237	  8 endpoints, as well as endpoint zero.
238
239	  This driver has been tested on S3C2416 and S3C2450 processors.
240
241config USB_MV_UDC
242	tristate "Marvell USB2.0 Device Controller"
243	depends on HAS_DMA
244	help
245	  Marvell Socs (including PXA and MMP series) include a high speed
246	  USB2.0 OTG controller, which can be configured as high speed or
247	  full speed USB peripheral.
248
249config USB_MV_U3D
250	depends on HAS_DMA
251	tristate "MARVELL PXA2128 USB 3.0 controller"
252	help
253	  MARVELL PXA2128 Processor series include a super speed USB3.0 device
254	  controller, which support super speed USB peripheral.
255
256#
257# Controllers available in both integrated and discrete versions
258#
259
260config USB_M66592
261	tristate "Renesas M66592 USB Peripheral Controller"
262	depends on HAS_IOMEM
263	help
264	   M66592 is a discrete USB peripheral controller chip that
265	   supports both full and high speed USB 2.0 data transfers.
266	   It has seven configurable endpoints, and endpoint zero.
267
268	   Say "y" to link the driver statically, or "m" to build a
269	   dynamically linked module called "m66592_udc" and force all
270	   gadget drivers to also be dynamically linked.
271
272source "drivers/usb/gadget/udc/bdc/Kconfig"
273
274#
275# Controllers available only in discrete form (and all PCI controllers)
276#
277
278config USB_AMD5536UDC
279	tristate "AMD5536 UDC"
280	depends on PCI
281	help
282	   The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
283	   It is a USB Highspeed DMA capable USB device controller. Beside ep0
284	   it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
285	   The UDC port supports OTG operation, and may be used as a host port
286	   if it's not being used to implement peripheral or OTG roles.
287
288	   Say "y" to link the driver statically, or "m" to build a
289	   dynamically linked module called "amd5536udc" and force all
290	   gadget drivers to also be dynamically linked.
291
292config USB_FSL_QE
293	tristate "Freescale QE/CPM USB Device Controller"
294	depends on FSL_SOC && (QUICC_ENGINE || CPM)
295	help
296	   Some of Freescale PowerPC processors have a Full Speed
297	   QE/CPM2 USB controller, which support device mode with 4
298	   programmable endpoints. This driver supports the
299	   controller in the MPC8360 and MPC8272, and should work with
300	   controllers having QE or CPM2, given minor tweaks.
301
302	   Set CONFIG_USB_GADGET to "m" to build this driver as a
303	   dynamically linked module called "fsl_qe_udc".
304
305config USB_NET2272
306	depends on HAS_IOMEM
307	tristate "PLX NET2272"
308	help
309	  PLX NET2272 is a USB peripheral controller which supports
310	  both full and high speed USB 2.0 data transfers.
311
312	  It has three configurable endpoints, as well as endpoint zero
313	  (for control transfer).
314	  Say "y" to link the driver statically, or "m" to build a
315	  dynamically linked module called "net2272" and force all
316	  gadget drivers to also be dynamically linked.
317
318config USB_NET2272_DMA
319	bool "Support external DMA controller"
320	depends on USB_NET2272 && HAS_DMA
321	help
322	  The NET2272 part can optionally support an external DMA
323	  controller, but your board has to have support in the
324	  driver itself.
325
326	  If unsure, say "N" here.  The driver works fine in PIO mode.
327
328config USB_NET2280
329	tristate "NetChip NET228x / PLX USB3x8x"
330	depends on PCI
331	help
332	   NetChip 2280 / 2282 is a PCI based USB peripheral controller which
333	   supports both full and high speed USB 2.0 data transfers.
334
335	   It has six configurable endpoints, as well as endpoint zero
336	   (for control transfers) and several endpoints with dedicated
337	   functions.
338
339	   PLX 2380 is a PCIe version of the PLX 2380.
340
341	   PLX 3380 / 3382 is a PCIe based USB peripheral controller which
342	   supports full, high speed USB 2.0 and super speed USB 3.0
343	   data transfers.
344
345	   It has eight configurable endpoints, as well as endpoint zero
346	   (for control transfers) and several endpoints with dedicated
347	   functions.
348
349	   Say "y" to link the driver statically, or "m" to build a
350	   dynamically linked module called "net2280" and force all
351	   gadget drivers to also be dynamically linked.
352
353config USB_GOKU
354	tristate "Toshiba TC86C001 'Goku-S'"
355	depends on PCI
356	help
357	   The Toshiba TC86C001 is a PCI device which includes controllers
358	   for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
359
360	   The device controller has three configurable (bulk or interrupt)
361	   endpoints, plus endpoint zero (for control transfers).
362
363	   Say "y" to link the driver statically, or "m" to build a
364	   dynamically linked module called "goku_udc" and to force all
365	   gadget drivers to also be dynamically linked.
366
367config USB_EG20T
368	tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
369	depends on PCI
370	help
371	  This is a USB device driver for EG20T PCH.
372	  EG20T PCH is the platform controller hub that is used in Intel's
373	  general embedded platform. EG20T PCH has USB device interface.
374	  Using this interface, it is able to access system devices connected
375	  to USB device.
376	  This driver enables USB device function.
377	  USB device is a USB peripheral controller which
378	  supports both full and high speed USB 2.0 data transfers.
379	  This driver supports both control transfer and bulk transfer modes.
380	  This driver dose not support interrupt transfer or isochronous
381	  transfer modes.
382
383	  This driver also can be used for LAPIS Semiconductor's ML7213 which is
384	  for IVI(In-Vehicle Infotainment) use.
385	  ML7831 is for general purpose use.
386	  ML7213/ML7831 is companion chip for Intel Atom E6xx series.
387	  ML7213/ML7831 is completely compatible for Intel EG20T PCH.
388
389	  This driver can be used with Intel's Quark X1000 SOC platform
390
391config USB_GADGET_XILINX
392	tristate "Xilinx USB Driver"
393	depends on HAS_DMA
394	depends on OF || COMPILE_TEST
395	help
396	  USB peripheral controller driver for Xilinx USB2 device.
397	  Xilinx USB2 device is a soft IP which supports both full
398	  and high speed USB 2.0 data transfers. It has seven configurable
399	  endpoints(bulk or interrupt or isochronous), as well as
400	  endpoint zero(for control transfers).
401
402	  Say "y" to link the driver statically, or "m" to build a
403	  dynamically linked module called "udc-xilinx" and force all
404	  gadget drivers to also be dynamically linked.
405
406#
407# LAST -- dummy/emulated controller
408#
409
410config USB_DUMMY_HCD
411	tristate "Dummy HCD (DEVELOPMENT)"
412	depends on USB=y || (USB=m && USB_GADGET=m)
413	help
414	  This host controller driver emulates USB, looping all data transfer
415	  requests back to a USB "gadget driver" in the same host.  The host
416	  side is the master; the gadget side is the slave.  Gadget drivers
417	  can be high, full, or low speed; and they have access to endpoints
418	  like those from NET2280, PXA2xx, or SA1100 hardware.
419
420	  This may help in some stages of creating a driver to embed in a
421	  Linux device, since it lets you debug several parts of the gadget
422	  driver without its hardware or drivers being involved.
423
424	  Since such a gadget side driver needs to interoperate with a host
425	  side Linux-USB device driver, this may help to debug both sides
426	  of a USB protocol stack.
427
428	  Say "y" to link the driver statically, or "m" to build a
429	  dynamically linked module called "dummy_hcd" and force all
430	  gadget drivers to also be dynamically linked.
431
432# NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
433# first and will be selected by default.
434
435endmenu
436