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