xref: /linux/drivers/usb/gadget/udc/Kconfig (revision 9cad72dfc5567c66ab0e5a0a2474c5f36c268694)
1cae8dc3bSGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
290fccb52SAndrzej Pietrasiewicz#
390fccb52SAndrzej Pietrasiewicz# USB Gadget support on a system involves
490fccb52SAndrzej Pietrasiewicz#    (a) a peripheral controller, and
590fccb52SAndrzej Pietrasiewicz#    (b) the gadget driver using it.
690fccb52SAndrzej Pietrasiewicz#
790fccb52SAndrzej Pietrasiewicz# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
890fccb52SAndrzej Pietrasiewicz#
990fccb52SAndrzej Pietrasiewicz#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
1090fccb52SAndrzej Pietrasiewicz#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
1190fccb52SAndrzej Pietrasiewicz#  - Some systems have both kinds of controllers.
1290fccb52SAndrzej Pietrasiewicz#
1390fccb52SAndrzej Pietrasiewicz# With help from a special transceiver and a "Mini-AB" jack, systems with
1490fccb52SAndrzej Pietrasiewicz# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
1590fccb52SAndrzej Pietrasiewicz#
1690fccb52SAndrzej Pietrasiewicz
1790fccb52SAndrzej Pietrasiewicz#
1890fccb52SAndrzej Pietrasiewicz# USB Peripheral Controller Support
1990fccb52SAndrzej Pietrasiewicz#
2090fccb52SAndrzej Pietrasiewicz# The order here is alphabetical, except that integrated controllers go
2190fccb52SAndrzej Pietrasiewicz# before discrete ones so they will be the initial/default value:
2290fccb52SAndrzej Pietrasiewicz#   - integrated/SOC controllers first
2390fccb52SAndrzej Pietrasiewicz#   - licensed IP used in both SOC and discrete versions
2490fccb52SAndrzej Pietrasiewicz#   - discrete ones (including all PCI-only controllers)
2590fccb52SAndrzej Pietrasiewicz#   - debug/dummy gadget+hcd is last.
2690fccb52SAndrzej Pietrasiewicz#
2790fccb52SAndrzej Pietrasiewiczmenu "USB Peripheral Controller"
2890fccb52SAndrzej Pietrasiewicz
2990fccb52SAndrzej Pietrasiewicz#
3090fccb52SAndrzej Pietrasiewicz# Integrated controllers
3190fccb52SAndrzej Pietrasiewicz#
3290fccb52SAndrzej Pietrasiewicz
3390fccb52SAndrzej Pietrasiewiczconfig USB_AT91
3490fccb52SAndrzej Pietrasiewicz	tristate "Atmel AT91 USB Device Port"
3590fccb52SAndrzej Pietrasiewicz	depends on ARCH_AT91
366f1f0ad9SJean Delvare	depends on OF
3790fccb52SAndrzej Pietrasiewicz	help
3890fccb52SAndrzej Pietrasiewicz	   Many Atmel AT91 processors (such as the AT91RM2000) have a
3990fccb52SAndrzej Pietrasiewicz	   full speed USB Device Port with support for five configurable
4090fccb52SAndrzej Pietrasiewicz	   endpoints (plus endpoint zero).
4190fccb52SAndrzej Pietrasiewicz
4290fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
4390fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "at91_udc" and force all
4490fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
4590fccb52SAndrzej Pietrasiewicz
4690fccb52SAndrzej Pietrasiewiczconfig USB_LPC32XX
4790fccb52SAndrzej Pietrasiewicz	tristate "LPC32XX USB Peripheral Controller"
48792e559eSArnd Bergmann	depends on ARCH_LPC32XX || COMPILE_TEST
4950ad1528SArnd Bergmann	depends on I2C
5090fccb52SAndrzej Pietrasiewicz	select USB_ISP1301
5190fccb52SAndrzej Pietrasiewicz	help
5290fccb52SAndrzej Pietrasiewicz	   This option selects the USB device controller in the LPC32xx SoC.
5390fccb52SAndrzej Pietrasiewicz
5490fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
5590fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "lpc32xx_udc" and force all
5690fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
5790fccb52SAndrzej Pietrasiewicz
5890fccb52SAndrzej Pietrasiewiczconfig USB_ATMEL_USBA
5990fccb52SAndrzej Pietrasiewicz	tristate "Atmel USBA"
6046ddd79eSAndy Shevchenko	depends on ARCH_AT91
6190fccb52SAndrzej Pietrasiewicz	help
6293dd2f71SHans-Christian Noren Egtvedt	  USBA is the integrated high-speed USB Device controller on some
6393dd2f71SHans-Christian Noren Egtvedt	  AT91SAM9 and AT91CAP9 processors from Atmel.
6490fccb52SAndrzej Pietrasiewicz
65741d2558SCristian Birsan	  The fifo_mode parameter is used to select endpoint allocation mode.
66741d2558SCristian Birsan	  fifo_mode = 0 is used to let the driver autoconfigure the endpoints.
6748eab1f2SCristian Birsan	  In this case, for ep1 2 banks are allocated if it works in isochronous
6848eab1f2SCristian Birsan	  mode and only 1 bank otherwise. For the rest of the endpoints
6948eab1f2SCristian Birsan	  only 1 bank is allocated.
70741d2558SCristian Birsan
71741d2558SCristian Birsan	  fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration
72741d2558SCristian Birsan	  allowing the usage of ep1 - ep6
73741d2558SCristian Birsan
74741d2558SCristian Birsan	  fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes)
75741d2558SCristian Birsan	  configuration allowing the usage of ep1 - ep3
76741d2558SCristian Birsan
77741d2558SCristian Birsan	  fifo_mode = 3 is a balanced performance configuration allowing the
78741d2558SCristian Birsan	  the usage of ep1 - ep8
79741d2558SCristian Birsan
8090fccb52SAndrzej Pietrasiewiczconfig USB_BCM63XX_UDC
8190fccb52SAndrzej Pietrasiewicz	tristate "Broadcom BCM63xx Peripheral Controller"
8290fccb52SAndrzej Pietrasiewicz	depends on BCM63XX
8390fccb52SAndrzej Pietrasiewicz	help
8490fccb52SAndrzej Pietrasiewicz	   Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
8590fccb52SAndrzej Pietrasiewicz	   high speed USB Device Port with support for four fixed endpoints
8690fccb52SAndrzej Pietrasiewicz	   (plus endpoint zero).
8790fccb52SAndrzej Pietrasiewicz
8890fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
8990fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "bcm63xx_udc".
9090fccb52SAndrzej Pietrasiewicz
9190fccb52SAndrzej Pietrasiewiczconfig USB_FSL_USB2
9290fccb52SAndrzej Pietrasiewicz	tristate "Freescale Highspeed USB DR Peripheral Controller"
93a390bef7SFabio Estevam	depends on FSL_SOC
9490fccb52SAndrzej Pietrasiewicz	help
9590fccb52SAndrzej Pietrasiewicz	   Some of Freescale PowerPC and i.MX processors have a High Speed
9690fccb52SAndrzej Pietrasiewicz	   Dual-Role(DR) USB controller, which supports device mode.
9790fccb52SAndrzej Pietrasiewicz
9890fccb52SAndrzej Pietrasiewicz	   The number of programmable endpoints is different through
9990fccb52SAndrzej Pietrasiewicz	   SOC revisions.
10090fccb52SAndrzej Pietrasiewicz
10190fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
10290fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "fsl_usb2_udc" and force
10390fccb52SAndrzej Pietrasiewicz	   all gadget drivers to also be dynamically linked.
10490fccb52SAndrzej Pietrasiewicz
10590fccb52SAndrzej Pietrasiewiczconfig USB_FUSB300
10690fccb52SAndrzej Pietrasiewicz	tristate "Faraday FUSB300 USB Peripheral Controller"
10790fccb52SAndrzej Pietrasiewicz	depends on !PHYS_ADDR_T_64BIT && HAS_DMA
10890fccb52SAndrzej Pietrasiewicz	help
10990fccb52SAndrzej Pietrasiewicz	   Faraday usb device controller FUSB300 driver
11090fccb52SAndrzej Pietrasiewicz
11190fccb52SAndrzej Pietrasiewiczconfig USB_GR_UDC
11290fccb52SAndrzej Pietrasiewicz	tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver"
11390fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
11490fccb52SAndrzej Pietrasiewicz	help
11590fccb52SAndrzej Pietrasiewicz	  Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB
11690fccb52SAndrzej Pietrasiewicz	  VHDL IP core library.
11790fccb52SAndrzej Pietrasiewicz
11890fccb52SAndrzej Pietrasiewiczconfig USB_OMAP
11990fccb52SAndrzej Pietrasiewicz	tristate "OMAP USB Device Controller"
12090fccb52SAndrzej Pietrasiewicz	depends on ARCH_OMAP1
12190fccb52SAndrzej Pietrasiewicz	depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3)
12290fccb52SAndrzej Pietrasiewicz	help
12390fccb52SAndrzej Pietrasiewicz	   Many Texas Instruments OMAP processors have flexible full
12490fccb52SAndrzej Pietrasiewicz	   speed USB device controllers, with support for up to 30
12590fccb52SAndrzej Pietrasiewicz	   endpoints (plus endpoint zero).  This driver supports the
12690fccb52SAndrzej Pietrasiewicz	   controller in the OMAP 1611, and should work with controllers
12790fccb52SAndrzej Pietrasiewicz	   in other OMAP processors too, given minor tweaks.
12890fccb52SAndrzej Pietrasiewicz
12990fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
13090fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "omap_udc" and force all
13190fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
13290fccb52SAndrzej Pietrasiewicz
13390fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X
13490fccb52SAndrzej Pietrasiewicz	tristate "PXA 25x or IXP 4xx"
13590fccb52SAndrzej Pietrasiewicz	depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
1361b4ea40bSVegard Nossum	depends on HAS_IOMEM
13790fccb52SAndrzej Pietrasiewicz	help
13890fccb52SAndrzej Pietrasiewicz	   Intel's PXA 25x series XScale ARM-5TE processors include
13990fccb52SAndrzej Pietrasiewicz	   an integrated full speed USB 1.1 device controller.  The
14090fccb52SAndrzej Pietrasiewicz	   controller in the IXP 4xx series is register-compatible.
14190fccb52SAndrzej Pietrasiewicz
14290fccb52SAndrzej Pietrasiewicz	   It has fifteen fixed-function endpoints, as well as endpoint
14390fccb52SAndrzej Pietrasiewicz	   zero (for control transfers).
14490fccb52SAndrzej Pietrasiewicz
14590fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
14690fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "pxa25x_udc" and force all
14790fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
14890fccb52SAndrzej Pietrasiewicz
14990fccb52SAndrzej Pietrasiewicz# if there's only one gadget driver, using only two bulk endpoints,
15090fccb52SAndrzej Pietrasiewicz# don't waste memory for the other endpoints
15190fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X_SMALL
15290fccb52SAndrzej Pietrasiewicz	depends on USB_PXA25X
15390fccb52SAndrzej Pietrasiewicz	bool
15490fccb52SAndrzej Pietrasiewicz	default n if USB_ETH_RNDIS
15590fccb52SAndrzej Pietrasiewicz	default y if USB_ZERO
15690fccb52SAndrzej Pietrasiewicz	default y if USB_ETH
15790fccb52SAndrzej Pietrasiewicz	default y if USB_G_SERIAL
15890fccb52SAndrzej Pietrasiewicz
15990fccb52SAndrzej Pietrasiewiczconfig USB_R8A66597
16090fccb52SAndrzej Pietrasiewicz	tristate "Renesas R8A66597 USB Peripheral Controller"
16190fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
16290fccb52SAndrzej Pietrasiewicz	help
16390fccb52SAndrzej Pietrasiewicz	   R8A66597 is a discrete USB host and peripheral controller chip that
16490fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
16590fccb52SAndrzej Pietrasiewicz	   It has nine configurable endpoints, and endpoint zero.
16690fccb52SAndrzej Pietrasiewicz
16790fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
16890fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "r8a66597_udc" and force all
16990fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
17090fccb52SAndrzej Pietrasiewicz
17190fccb52SAndrzej Pietrasiewiczconfig USB_RENESAS_USBHS_UDC
17290fccb52SAndrzej Pietrasiewicz	tristate 'Renesas USBHS controller'
173cd91a0e9SGeert Uytterhoeven	depends on USB_RENESAS_USBHS
17490fccb52SAndrzej Pietrasiewicz	help
17590fccb52SAndrzej Pietrasiewicz	   Renesas USBHS is a discrete USB host and peripheral controller chip
17690fccb52SAndrzej Pietrasiewicz	   that supports both full and high speed USB 2.0 data transfers.
17790fccb52SAndrzej Pietrasiewicz	   It has nine or more configurable endpoints, and endpoint zero.
17890fccb52SAndrzej Pietrasiewicz
17990fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
18090fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "renesas_usbhs" and force all
18190fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
18290fccb52SAndrzej Pietrasiewicz
183*9cad72dfSBiju Dasconfig USB_RZV2M_USB3DRD
184*9cad72dfSBiju Das	tristate 'Renesas USB3.1 DRD controller'
185*9cad72dfSBiju Das	depends on ARCH_R9A09G011 || COMPILE_TEST
186*9cad72dfSBiju Das	default USB_XHCI_RZV2M
187*9cad72dfSBiju Das	default USB_RENESAS_USB3
188*9cad72dfSBiju Das	help
189*9cad72dfSBiju Das	   Renesas USB3.1 DRD controller is a USB DRD controller
190*9cad72dfSBiju Das	   that supports both host and device switching.
191*9cad72dfSBiju Das
192*9cad72dfSBiju Das	   Say "y" to link the driver statically, or "m" to build a
193*9cad72dfSBiju Das	   dynamically linked module called "rzv2m_usb3drd".
194*9cad72dfSBiju Das
195746bfe63SYoshihiro Shimodaconfig USB_RENESAS_USB3
196746bfe63SYoshihiro Shimoda	tristate 'Renesas USB3.0 Peripheral controller'
197dd9fee67SSimon Horman	depends on ARCH_RENESAS || COMPILE_TEST
198cd91a0e9SGeert Uytterhoeven	depends on EXTCON
199*9cad72dfSBiju Das	select USB_RZV2M_USB3DRD if ARCH_R9A09G011
20039facfa0SYoshihiro Shimoda	select USB_ROLE_SWITCH
201746bfe63SYoshihiro Shimoda	help
202746bfe63SYoshihiro Shimoda	   Renesas USB3.0 Peripheral controller is a USB peripheral controller
203746bfe63SYoshihiro Shimoda	   that supports super, high, and full speed USB 3.0 data transfers.
204746bfe63SYoshihiro Shimoda
205746bfe63SYoshihiro Shimoda	   Say "y" to link the driver statically, or "m" to build a
206746bfe63SYoshihiro Shimoda	   dynamically linked module called "renesas_usb3" and force all
207746bfe63SYoshihiro Shimoda	   gadget drivers to also be dynamically linked.
208746bfe63SYoshihiro Shimoda
2093e6e14ffSHerve Codinaconfig USB_RENESAS_USBF
2103e6e14ffSHerve Codina	tristate 'Renesas USB Function controller'
2113e6e14ffSHerve Codina	depends on ARCH_RENESAS || COMPILE_TEST
2123e6e14ffSHerve Codina	help
2133e6e14ffSHerve Codina	   Renesas USB Function controller is a USB peripheral controller
2143e6e14ffSHerve Codina	   available on RZ/N1 Renesas SoCs.
2153e6e14ffSHerve Codina
2163e6e14ffSHerve Codina	   Say "y" to link the driver statically, or "m" to build a
2173e6e14ffSHerve Codina	   dynamically linked module called "renesas_usbf" and force all
2183e6e14ffSHerve Codina	   gadget drivers to also be dynamically linked.
2193e6e14ffSHerve Codina
22090fccb52SAndrzej Pietrasiewiczconfig USB_PXA27X
22190fccb52SAndrzej Pietrasiewicz	tristate "PXA 27x"
222c470ba38SVegard Nossum	depends on HAS_IOMEM
22390fccb52SAndrzej Pietrasiewicz	help
22490fccb52SAndrzej Pietrasiewicz	   Intel's PXA 27x series XScale ARM v5TE processors include
22590fccb52SAndrzej Pietrasiewicz	   an integrated full speed USB 1.1 device controller.
22690fccb52SAndrzej Pietrasiewicz
22790fccb52SAndrzej Pietrasiewicz	   It has up to 23 endpoints, as well as endpoint zero (for
22890fccb52SAndrzej Pietrasiewicz	   control transfers).
22990fccb52SAndrzej Pietrasiewicz
23090fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
23190fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "pxa27x_udc" and force all
23290fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
23390fccb52SAndrzej Pietrasiewicz
23490fccb52SAndrzej Pietrasiewiczconfig USB_S3C2410
23590fccb52SAndrzej Pietrasiewicz	tristate "S3C2410 USB Device Controller"
23690fccb52SAndrzej Pietrasiewicz	depends on ARCH_S3C24XX
23790fccb52SAndrzej Pietrasiewicz	help
23890fccb52SAndrzej Pietrasiewicz	  Samsung's S3C2410 is an ARM-4 processor with an integrated
23990fccb52SAndrzej Pietrasiewicz	  full speed USB 1.1 device controller.  It has 4 configurable
24090fccb52SAndrzej Pietrasiewicz	  endpoints, as well as endpoint zero (for control transfers).
24190fccb52SAndrzej Pietrasiewicz
24290fccb52SAndrzej Pietrasiewicz	  This driver has been tested on the S3C2410, S3C2412, and
24390fccb52SAndrzej Pietrasiewicz	  S3C2440 processors.
24490fccb52SAndrzej Pietrasiewicz
24590fccb52SAndrzej Pietrasiewiczconfig USB_S3C2410_DEBUG
2466341e62bSChristoph Jaeger	bool "S3C2410 udc debug messages"
24790fccb52SAndrzej Pietrasiewicz	depends on USB_S3C2410
24890fccb52SAndrzej Pietrasiewicz
24990fccb52SAndrzej Pietrasiewiczconfig USB_S3C_HSUDC
25090fccb52SAndrzej Pietrasiewicz	tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
25190fccb52SAndrzej Pietrasiewicz	depends on ARCH_S3C24XX
25290fccb52SAndrzej Pietrasiewicz	help
25390fccb52SAndrzej Pietrasiewicz	  Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
25490fccb52SAndrzej Pietrasiewicz	  integrated with dual speed USB 2.0 device controller. It has
25590fccb52SAndrzej Pietrasiewicz	  8 endpoints, as well as endpoint zero.
25690fccb52SAndrzej Pietrasiewicz
25790fccb52SAndrzej Pietrasiewicz	  This driver has been tested on S3C2416 and S3C2450 processors.
25890fccb52SAndrzej Pietrasiewicz
25990fccb52SAndrzej Pietrasiewiczconfig USB_MV_UDC
26090fccb52SAndrzej Pietrasiewicz	tristate "Marvell USB2.0 Device Controller"
26190fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
26290fccb52SAndrzej Pietrasiewicz	help
26390fccb52SAndrzej Pietrasiewicz	  Marvell Socs (including PXA and MMP series) include a high speed
26490fccb52SAndrzej Pietrasiewicz	  USB2.0 OTG controller, which can be configured as high speed or
26590fccb52SAndrzej Pietrasiewicz	  full speed USB peripheral.
26690fccb52SAndrzej Pietrasiewicz
26790fccb52SAndrzej Pietrasiewiczconfig USB_MV_U3D
26890fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
26990fccb52SAndrzej Pietrasiewicz	tristate "MARVELL PXA2128 USB 3.0 controller"
27090fccb52SAndrzej Pietrasiewicz	help
27190fccb52SAndrzej Pietrasiewicz	  MARVELL PXA2128 Processor series include a super speed USB3.0 device
27290fccb52SAndrzej Pietrasiewicz	  controller, which support super speed USB peripheral.
27390fccb52SAndrzej Pietrasiewicz
27497b3ffa2SRaviteja Garimellaconfig USB_SNP_CORE
2751b9f35adSRaviteja Garimella	depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT)
276a9ef5c47SGeert Uytterhoeven	depends on HAS_DMA
27797b3ffa2SRaviteja Garimella	tristate
27897b3ffa2SRaviteja Garimella	help
27997b3ffa2SRaviteja Garimella	  This enables core driver support for Synopsys USB 2.0 Device
28097b3ffa2SRaviteja Garimella	  controller.
28197b3ffa2SRaviteja Garimella
28297b3ffa2SRaviteja Garimella	  This will be enabled when PCI or Platform driver for this UDC is
28397b3ffa2SRaviteja Garimella	  selected. Currently, this will be enabled by USB_SNP_UDC_PLAT or
28497b3ffa2SRaviteja Garimella	  USB_AMD5536UDC options.
28597b3ffa2SRaviteja Garimella
28697b3ffa2SRaviteja Garimella	  This IP is different to the High Speed OTG IP that can be enabled
28797b3ffa2SRaviteja Garimella	  by selecting USB_DWC2 or USB_DWC3 options.
28897b3ffa2SRaviteja Garimella
2891b9f35adSRaviteja Garimellaconfig USB_SNP_UDC_PLAT
2901b9f35adSRaviteja Garimella	tristate "Synopsys USB 2.0 Device controller"
291a9ef5c47SGeert Uytterhoeven	depends on USB_GADGET && OF && HAS_DMA
292641663a1SRandy Dunlap	depends on EXTCON || EXTCON=n
2931b9f35adSRaviteja Garimella	select USB_SNP_CORE
2941b9f35adSRaviteja Garimella	default ARCH_BCM_IPROC
2951b9f35adSRaviteja Garimella	help
2961b9f35adSRaviteja Garimella	  This adds Platform Device support for Synopsys Designware core
2971b9f35adSRaviteja Garimella	  AHB subsystem USB2.0 Device Controller (UDC).
2981b9f35adSRaviteja Garimella
2991b9f35adSRaviteja Garimella	  This driver works with UDCs integrated into Broadcom's Northstar2
3001b9f35adSRaviteja Garimella	  and Cygnus SoCs.
3011b9f35adSRaviteja Garimella
3021b9f35adSRaviteja Garimella	  If unsure, say N.
30390fccb52SAndrzej Pietrasiewicz#
30490fccb52SAndrzej Pietrasiewicz# Controllers available in both integrated and discrete versions
30590fccb52SAndrzej Pietrasiewicz#
30690fccb52SAndrzej Pietrasiewicz
30790fccb52SAndrzej Pietrasiewiczconfig USB_M66592
30890fccb52SAndrzej Pietrasiewicz	tristate "Renesas M66592 USB Peripheral Controller"
309be6708e6SVegard Nossum	depends on HAS_IOMEM
31090fccb52SAndrzej Pietrasiewicz	help
31190fccb52SAndrzej Pietrasiewicz	   M66592 is a discrete USB peripheral controller chip that
31290fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
31390fccb52SAndrzej Pietrasiewicz	   It has seven configurable endpoints, and endpoint zero.
31490fccb52SAndrzej Pietrasiewicz
31590fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
31690fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "m66592_udc" and force all
31790fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
31890fccb52SAndrzej Pietrasiewicz
319efed421aSAshwini Pahujasource "drivers/usb/gadget/udc/bdc/Kconfig"
320efed421aSAshwini Pahuja
32190fccb52SAndrzej Pietrasiewicz#
32290fccb52SAndrzej Pietrasiewicz# Controllers available only in discrete form (and all PCI controllers)
32390fccb52SAndrzej Pietrasiewicz#
32490fccb52SAndrzej Pietrasiewicz
32590fccb52SAndrzej Pietrasiewiczconfig USB_AMD5536UDC
32690fccb52SAndrzej Pietrasiewicz	tristate "AMD5536 UDC"
3278097cf2fSRandy Dunlap	depends on USB_PCI && HAS_DMA
32897b3ffa2SRaviteja Garimella	select USB_SNP_CORE
32990fccb52SAndrzej Pietrasiewicz	help
33090fccb52SAndrzej Pietrasiewicz	   The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
33190fccb52SAndrzej Pietrasiewicz	   It is a USB Highspeed DMA capable USB device controller. Beside ep0
33290fccb52SAndrzej Pietrasiewicz	   it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
33390fccb52SAndrzej Pietrasiewicz	   The UDC port supports OTG operation, and may be used as a host port
33490fccb52SAndrzej Pietrasiewicz	   if it's not being used to implement peripheral or OTG roles.
33590fccb52SAndrzej Pietrasiewicz
33697b3ffa2SRaviteja Garimella	   This UDC is based on Synopsys USB device controller IP and selects
33797b3ffa2SRaviteja Garimella	   CONFIG_USB_SNP_CORE option to build the core driver.
33897b3ffa2SRaviteja Garimella
33990fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
34090fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "amd5536udc" and force all
34190fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
34290fccb52SAndrzej Pietrasiewicz
34390fccb52SAndrzej Pietrasiewiczconfig USB_FSL_QE
34490fccb52SAndrzej Pietrasiewicz	tristate "Freescale QE/CPM USB Device Controller"
34590fccb52SAndrzej Pietrasiewicz	depends on FSL_SOC && (QUICC_ENGINE || CPM)
346a0548b26SGeert Uytterhoeven	depends on !64BIT || BROKEN
34790fccb52SAndrzej Pietrasiewicz	help
34890fccb52SAndrzej Pietrasiewicz	   Some of Freescale PowerPC processors have a Full Speed
34990fccb52SAndrzej Pietrasiewicz	   QE/CPM2 USB controller, which support device mode with 4
35090fccb52SAndrzej Pietrasiewicz	   programmable endpoints. This driver supports the
35190fccb52SAndrzej Pietrasiewicz	   controller in the MPC8360 and MPC8272, and should work with
35290fccb52SAndrzej Pietrasiewicz	   controllers having QE or CPM2, given minor tweaks.
35390fccb52SAndrzej Pietrasiewicz
35490fccb52SAndrzej Pietrasiewicz	   Set CONFIG_USB_GADGET to "m" to build this driver as a
35590fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "fsl_qe_udc".
35690fccb52SAndrzej Pietrasiewicz
35790fccb52SAndrzej Pietrasiewiczconfig USB_NET2272
3587562b75bSVegard Nossum	depends on HAS_IOMEM
35990fccb52SAndrzej Pietrasiewicz	tristate "PLX NET2272"
36090fccb52SAndrzej Pietrasiewicz	help
36190fccb52SAndrzej Pietrasiewicz	  PLX NET2272 is a USB peripheral controller which supports
36290fccb52SAndrzej Pietrasiewicz	  both full and high speed USB 2.0 data transfers.
36390fccb52SAndrzej Pietrasiewicz
36490fccb52SAndrzej Pietrasiewicz	  It has three configurable endpoints, as well as endpoint zero
36590fccb52SAndrzej Pietrasiewicz	  (for control transfer).
36690fccb52SAndrzej Pietrasiewicz	  Say "y" to link the driver statically, or "m" to build a
36790fccb52SAndrzej Pietrasiewicz	  dynamically linked module called "net2272" and force all
36890fccb52SAndrzej Pietrasiewicz	  gadget drivers to also be dynamically linked.
36990fccb52SAndrzej Pietrasiewicz
37090fccb52SAndrzej Pietrasiewiczconfig USB_NET2272_DMA
3716341e62bSChristoph Jaeger	bool "Support external DMA controller"
37290fccb52SAndrzej Pietrasiewicz	depends on USB_NET2272 && HAS_DMA
37390fccb52SAndrzej Pietrasiewicz	help
37490fccb52SAndrzej Pietrasiewicz	  The NET2272 part can optionally support an external DMA
37590fccb52SAndrzej Pietrasiewicz	  controller, but your board has to have support in the
37690fccb52SAndrzej Pietrasiewicz	  driver itself.
37790fccb52SAndrzej Pietrasiewicz
37890fccb52SAndrzej Pietrasiewicz	  If unsure, say "N" here.  The driver works fine in PIO mode.
37990fccb52SAndrzej Pietrasiewicz
38090fccb52SAndrzej Pietrasiewiczconfig USB_NET2280
3815185c913STim Harvey	tristate "NetChip NET228x / PLX USB3x8x"
3822c93e790Syuan linyu	depends on USB_PCI
38390fccb52SAndrzej Pietrasiewicz	help
38490fccb52SAndrzej Pietrasiewicz	   NetChip 2280 / 2282 is a PCI based USB peripheral controller which
38590fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
38690fccb52SAndrzej Pietrasiewicz
38790fccb52SAndrzej Pietrasiewicz	   It has six configurable endpoints, as well as endpoint zero
38890fccb52SAndrzej Pietrasiewicz	   (for control transfers) and several endpoints with dedicated
38990fccb52SAndrzej Pietrasiewicz	   functions.
39090fccb52SAndrzej Pietrasiewicz
3915185c913STim Harvey	   PLX 2380 is a PCIe version of the PLX 2380.
3925185c913STim Harvey
39390fccb52SAndrzej Pietrasiewicz	   PLX 3380 / 3382 is a PCIe based USB peripheral controller which
39490fccb52SAndrzej Pietrasiewicz	   supports full, high speed USB 2.0 and super speed USB 3.0
39590fccb52SAndrzej Pietrasiewicz	   data transfers.
39690fccb52SAndrzej Pietrasiewicz
39790fccb52SAndrzej Pietrasiewicz	   It has eight configurable endpoints, as well as endpoint zero
39890fccb52SAndrzej Pietrasiewicz	   (for control transfers) and several endpoints with dedicated
39990fccb52SAndrzej Pietrasiewicz	   functions.
40090fccb52SAndrzej Pietrasiewicz
40190fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
40290fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "net2280" and force all
40390fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
40490fccb52SAndrzej Pietrasiewicz
40590fccb52SAndrzej Pietrasiewiczconfig USB_GOKU
40690fccb52SAndrzej Pietrasiewicz	tristate "Toshiba TC86C001 'Goku-S'"
4072c93e790Syuan linyu	depends on USB_PCI
40890fccb52SAndrzej Pietrasiewicz	help
40990fccb52SAndrzej Pietrasiewicz	   The Toshiba TC86C001 is a PCI device which includes controllers
41090fccb52SAndrzej Pietrasiewicz	   for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
41190fccb52SAndrzej Pietrasiewicz
41290fccb52SAndrzej Pietrasiewicz	   The device controller has three configurable (bulk or interrupt)
41390fccb52SAndrzej Pietrasiewicz	   endpoints, plus endpoint zero (for control transfers).
41490fccb52SAndrzej Pietrasiewicz
41590fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
41690fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "goku_udc" and to force all
41790fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
41890fccb52SAndrzej Pietrasiewicz
41990fccb52SAndrzej Pietrasiewiczconfig USB_EG20T
420a68df706SBryan O'Donoghue	tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
4212c93e790Syuan linyu	depends on USB_PCI
42290fccb52SAndrzej Pietrasiewicz	help
42390fccb52SAndrzej Pietrasiewicz	  This is a USB device driver for EG20T PCH.
42490fccb52SAndrzej Pietrasiewicz	  EG20T PCH is the platform controller hub that is used in Intel's
42590fccb52SAndrzej Pietrasiewicz	  general embedded platform. EG20T PCH has USB device interface.
42690fccb52SAndrzej Pietrasiewicz	  Using this interface, it is able to access system devices connected
42790fccb52SAndrzej Pietrasiewicz	  to USB device.
42890fccb52SAndrzej Pietrasiewicz	  This driver enables USB device function.
42990fccb52SAndrzej Pietrasiewicz	  USB device is a USB peripheral controller which
43090fccb52SAndrzej Pietrasiewicz	  supports both full and high speed USB 2.0 data transfers.
43190fccb52SAndrzej Pietrasiewicz	  This driver supports both control transfer and bulk transfer modes.
43290fccb52SAndrzej Pietrasiewicz	  This driver dose not support interrupt transfer or isochronous
43390fccb52SAndrzej Pietrasiewicz	  transfer modes.
43490fccb52SAndrzej Pietrasiewicz
43590fccb52SAndrzej Pietrasiewicz	  This driver also can be used for LAPIS Semiconductor's ML7213 which is
43690fccb52SAndrzej Pietrasiewicz	  for IVI(In-Vehicle Infotainment) use.
43790fccb52SAndrzej Pietrasiewicz	  ML7831 is for general purpose use.
43890fccb52SAndrzej Pietrasiewicz	  ML7213/ML7831 is companion chip for Intel Atom E6xx series.
43990fccb52SAndrzej Pietrasiewicz	  ML7213/ML7831 is completely compatible for Intel EG20T PCH.
44090fccb52SAndrzej Pietrasiewicz
441a68df706SBryan O'Donoghue	  This driver can be used with Intel's Quark X1000 SOC platform
4421f7c5166SSubbaraya Sundeep Bhatta
4431f7c5166SSubbaraya Sundeep Bhattaconfig USB_GADGET_XILINX
4441f7c5166SSubbaraya Sundeep Bhatta	tristate "Xilinx USB Driver"
445f1113be1SGeert Uytterhoeven	depends on HAS_DMA
4466f1f0ad9SJean Delvare	depends on OF
4471f7c5166SSubbaraya Sundeep Bhatta	help
4481f7c5166SSubbaraya Sundeep Bhatta	  USB peripheral controller driver for Xilinx USB2 device.
4491f7c5166SSubbaraya Sundeep Bhatta	  Xilinx USB2 device is a soft IP which supports both full
4501f7c5166SSubbaraya Sundeep Bhatta	  and high speed USB 2.0 data transfers. It has seven configurable
4511f7c5166SSubbaraya Sundeep Bhatta	  endpoints(bulk or interrupt or isochronous), as well as
4521f7c5166SSubbaraya Sundeep Bhatta	  endpoint zero(for control transfers).
4531f7c5166SSubbaraya Sundeep Bhatta
4541f7c5166SSubbaraya Sundeep Bhatta	  Say "y" to link the driver statically, or "m" to build a
4551f7c5166SSubbaraya Sundeep Bhatta	  dynamically linked module called "udc-xilinx" and force all
4561f7c5166SSubbaraya Sundeep Bhatta	  gadget drivers to also be dynamically linked.
4571f7c5166SSubbaraya Sundeep Bhatta
45848ba02b2SJassi Brarconfig USB_MAX3420_UDC
45948ba02b2SJassi Brar	tristate "MAX3420 (USB-over-SPI) support"
46048ba02b2SJassi Brar	depends on SPI
46148ba02b2SJassi Brar	help
46248ba02b2SJassi Brar	  The Maxim MAX3420 chip supports USB2.0 full-speed peripheral mode.
46348ba02b2SJassi Brar	  The MAX3420 is run by SPI interface, and hence the dependency.
46448ba02b2SJassi Brar
46548ba02b2SJassi Brar	  To compile this driver as a module, choose M here: the module will
46648ba02b2SJassi Brar	  be called max3420_udc
46748ba02b2SJassi Brar
46849db4272SNagarjuna Kristamconfig USB_TEGRA_XUDC
46949db4272SNagarjuna Kristam	tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller"
47049db4272SNagarjuna Kristam	depends on ARCH_TEGRA || COMPILE_TEST
47149db4272SNagarjuna Kristam	depends on PHY_TEGRA_XUSB
47249db4272SNagarjuna Kristam	help
47349db4272SNagarjuna Kristam	 Enables NVIDIA Tegra USB 3.0 device mode controller driver.
47449db4272SNagarjuna Kristam
47549db4272SNagarjuna Kristam	 Say "y" to link the driver statically, or "m" to build a
47649db4272SNagarjuna Kristam	 dynamically linked module called "tegra_xudc" and force all
47749db4272SNagarjuna Kristam	 gadget drivers to also be dynamically linked.
47849db4272SNagarjuna Kristam
479055276c1SNeal Liuconfig USB_ASPEED_UDC
480055276c1SNeal Liu	tristate "Aspeed UDC driver support"
481055276c1SNeal Liu	depends on ARCH_ASPEED || COMPILE_TEST
482055276c1SNeal Liu	depends on USB_LIBCOMPOSITE
483055276c1SNeal Liu	help
484055276c1SNeal Liu	  Enables Aspeed USB2.0 Device Controller driver for AST260x
485055276c1SNeal Liu	  family SoCs. The controller supports 1 control endpoint and
486055276c1SNeal Liu	  4 programmable endpoints.
487055276c1SNeal Liu
488055276c1SNeal Liu	  Say "y" to link the driver statically, or "m" to build a
489055276c1SNeal Liu	  dynamically linked module called "aspeed_udc" and force all
490055276c1SNeal Liu	  gadget drivers to also be dynamically linked.
491055276c1SNeal Liu
4927ecca2a4SBenjamin Herrenschmidtsource "drivers/usb/gadget/udc/aspeed-vhub/Kconfig"
4937ecca2a4SBenjamin Herrenschmidt
49490fccb52SAndrzej Pietrasiewicz#
49590fccb52SAndrzej Pietrasiewicz# LAST -- dummy/emulated controller
49690fccb52SAndrzej Pietrasiewicz#
49790fccb52SAndrzej Pietrasiewicz
49890fccb52SAndrzej Pietrasiewiczconfig USB_DUMMY_HCD
49990fccb52SAndrzej Pietrasiewicz	tristate "Dummy HCD (DEVELOPMENT)"
50090fccb52SAndrzej Pietrasiewicz	depends on USB=y || (USB=m && USB_GADGET=m)
50190fccb52SAndrzej Pietrasiewicz	help
50290fccb52SAndrzej Pietrasiewicz	  This host controller driver emulates USB, looping all data transfer
50390fccb52SAndrzej Pietrasiewicz	  requests back to a USB "gadget driver" in the same host.  The host
504b9b70170SGreg Kroah-Hartman	  side is the controller; the gadget side is the device.  Gadget drivers
50590fccb52SAndrzej Pietrasiewicz	  can be high, full, or low speed; and they have access to endpoints
50690fccb52SAndrzej Pietrasiewicz	  like those from NET2280, PXA2xx, or SA1100 hardware.
50790fccb52SAndrzej Pietrasiewicz
50890fccb52SAndrzej Pietrasiewicz	  This may help in some stages of creating a driver to embed in a
50990fccb52SAndrzej Pietrasiewicz	  Linux device, since it lets you debug several parts of the gadget
51090fccb52SAndrzej Pietrasiewicz	  driver without its hardware or drivers being involved.
51190fccb52SAndrzej Pietrasiewicz
51290fccb52SAndrzej Pietrasiewicz	  Since such a gadget side driver needs to interoperate with a host
51390fccb52SAndrzej Pietrasiewicz	  side Linux-USB device driver, this may help to debug both sides
51490fccb52SAndrzej Pietrasiewicz	  of a USB protocol stack.
51590fccb52SAndrzej Pietrasiewicz
51690fccb52SAndrzej Pietrasiewicz	  Say "y" to link the driver statically, or "m" to build a
51790fccb52SAndrzej Pietrasiewicz	  dynamically linked module called "dummy_hcd" and force all
51890fccb52SAndrzej Pietrasiewicz	  gadget drivers to also be dynamically linked.
51990fccb52SAndrzej Pietrasiewicz
52090fccb52SAndrzej Pietrasiewicz# NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
52190fccb52SAndrzej Pietrasiewicz# first and will be selected by default.
52290fccb52SAndrzej Pietrasiewicz
52390fccb52SAndrzej Pietrasiewiczendmenu
524