xref: /linux/drivers/usb/gadget/udc/Kconfig (revision be6708e6f2d13b26bfdc416b5bf31c942ccff72c)
190fccb52SAndrzej Pietrasiewicz#
290fccb52SAndrzej Pietrasiewicz# USB Gadget support on a system involves
390fccb52SAndrzej Pietrasiewicz#    (a) a peripheral controller, and
490fccb52SAndrzej Pietrasiewicz#    (b) the gadget driver using it.
590fccb52SAndrzej Pietrasiewicz#
690fccb52SAndrzej Pietrasiewicz# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
790fccb52SAndrzej Pietrasiewicz#
890fccb52SAndrzej Pietrasiewicz#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
990fccb52SAndrzej Pietrasiewicz#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
1090fccb52SAndrzej Pietrasiewicz#  - Some systems have both kinds of controllers.
1190fccb52SAndrzej Pietrasiewicz#
1290fccb52SAndrzej Pietrasiewicz# With help from a special transceiver and a "Mini-AB" jack, systems with
1390fccb52SAndrzej Pietrasiewicz# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
1490fccb52SAndrzej Pietrasiewicz#
1590fccb52SAndrzej Pietrasiewicz
1690fccb52SAndrzej Pietrasiewicz#
1790fccb52SAndrzej Pietrasiewicz# USB Peripheral Controller Support
1890fccb52SAndrzej Pietrasiewicz#
1990fccb52SAndrzej Pietrasiewicz# The order here is alphabetical, except that integrated controllers go
2090fccb52SAndrzej Pietrasiewicz# before discrete ones so they will be the initial/default value:
2190fccb52SAndrzej Pietrasiewicz#   - integrated/SOC controllers first
2290fccb52SAndrzej Pietrasiewicz#   - licensed IP used in both SOC and discrete versions
2390fccb52SAndrzej Pietrasiewicz#   - discrete ones (including all PCI-only controllers)
2490fccb52SAndrzej Pietrasiewicz#   - debug/dummy gadget+hcd is last.
2590fccb52SAndrzej Pietrasiewicz#
2690fccb52SAndrzej Pietrasiewiczmenu "USB Peripheral Controller"
2790fccb52SAndrzej Pietrasiewicz
2890fccb52SAndrzej Pietrasiewicz#
2990fccb52SAndrzej Pietrasiewicz# Integrated controllers
3090fccb52SAndrzej Pietrasiewicz#
3190fccb52SAndrzej Pietrasiewicz
3290fccb52SAndrzej Pietrasiewiczconfig USB_AT91
3390fccb52SAndrzej Pietrasiewicz	tristate "Atmel AT91 USB Device Port"
3490fccb52SAndrzej Pietrasiewicz	depends on ARCH_AT91
359f00fc1dSBoris Brezillon	depends on OF || COMPILE_TEST
3690fccb52SAndrzej Pietrasiewicz	help
3790fccb52SAndrzej Pietrasiewicz	   Many Atmel AT91 processors (such as the AT91RM2000) have a
3890fccb52SAndrzej Pietrasiewicz	   full speed USB Device Port with support for five configurable
3990fccb52SAndrzej Pietrasiewicz	   endpoints (plus endpoint zero).
4090fccb52SAndrzej Pietrasiewicz
4190fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
4290fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "at91_udc" and force all
4390fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
4490fccb52SAndrzej Pietrasiewicz
4590fccb52SAndrzej Pietrasiewiczconfig USB_LPC32XX
4690fccb52SAndrzej Pietrasiewicz	tristate "LPC32XX USB Peripheral Controller"
4790fccb52SAndrzej Pietrasiewicz	depends on ARCH_LPC32XX && I2C
4890fccb52SAndrzej Pietrasiewicz	select USB_ISP1301
4990fccb52SAndrzej Pietrasiewicz	help
5090fccb52SAndrzej Pietrasiewicz	   This option selects the USB device controller in the LPC32xx SoC.
5190fccb52SAndrzej Pietrasiewicz
5290fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
5390fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "lpc32xx_udc" and force all
5490fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
5590fccb52SAndrzej Pietrasiewicz
5690fccb52SAndrzej Pietrasiewiczconfig USB_ATMEL_USBA
5790fccb52SAndrzej Pietrasiewicz	tristate "Atmel USBA"
589af91954SSudip Mukherjee	depends on ((AVR32 && !OF) || ARCH_AT91)
5990fccb52SAndrzej Pietrasiewicz	help
6090fccb52SAndrzej Pietrasiewicz	  USBA is the integrated high-speed USB Device controller on
6190fccb52SAndrzej Pietrasiewicz	  the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
6290fccb52SAndrzej Pietrasiewicz
6390fccb52SAndrzej Pietrasiewiczconfig USB_BCM63XX_UDC
6490fccb52SAndrzej Pietrasiewicz	tristate "Broadcom BCM63xx Peripheral Controller"
6590fccb52SAndrzej Pietrasiewicz	depends on BCM63XX
6690fccb52SAndrzej Pietrasiewicz	help
6790fccb52SAndrzej Pietrasiewicz	   Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
6890fccb52SAndrzej Pietrasiewicz	   high speed USB Device Port with support for four fixed endpoints
6990fccb52SAndrzej Pietrasiewicz	   (plus endpoint zero).
7090fccb52SAndrzej Pietrasiewicz
7190fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
7290fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "bcm63xx_udc".
7390fccb52SAndrzej Pietrasiewicz
7490fccb52SAndrzej Pietrasiewiczconfig USB_FSL_USB2
7590fccb52SAndrzej Pietrasiewicz	tristate "Freescale Highspeed USB DR Peripheral Controller"
7690fccb52SAndrzej Pietrasiewicz	depends on FSL_SOC || ARCH_MXC
7790fccb52SAndrzej Pietrasiewicz	select USB_FSL_MPH_DR_OF if OF
7890fccb52SAndrzej Pietrasiewicz	help
7990fccb52SAndrzej Pietrasiewicz	   Some of Freescale PowerPC and i.MX processors have a High Speed
8090fccb52SAndrzej Pietrasiewicz	   Dual-Role(DR) USB controller, which supports device mode.
8190fccb52SAndrzej Pietrasiewicz
8290fccb52SAndrzej Pietrasiewicz	   The number of programmable endpoints is different through
8390fccb52SAndrzej Pietrasiewicz	   SOC revisions.
8490fccb52SAndrzej Pietrasiewicz
8590fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
8690fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "fsl_usb2_udc" and force
8790fccb52SAndrzej Pietrasiewicz	   all gadget drivers to also be dynamically linked.
8890fccb52SAndrzej Pietrasiewicz
8990fccb52SAndrzej Pietrasiewiczconfig USB_FUSB300
9090fccb52SAndrzej Pietrasiewicz	tristate "Faraday FUSB300 USB Peripheral Controller"
9190fccb52SAndrzej Pietrasiewicz	depends on !PHYS_ADDR_T_64BIT && HAS_DMA
9290fccb52SAndrzej Pietrasiewicz	help
9390fccb52SAndrzej Pietrasiewicz	   Faraday usb device controller FUSB300 driver
9490fccb52SAndrzej Pietrasiewicz
9590fccb52SAndrzej Pietrasiewiczconfig USB_FOTG210_UDC
9690fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
9790fccb52SAndrzej Pietrasiewicz	tristate "Faraday FOTG210 USB Peripheral Controller"
9890fccb52SAndrzej Pietrasiewicz	help
9990fccb52SAndrzej Pietrasiewicz	   Faraday USB2.0 OTG controller which can be configured as
10090fccb52SAndrzej Pietrasiewicz	   high speed or full speed USB device. This driver supppors
10190fccb52SAndrzej Pietrasiewicz	   Bulk Transfer so far.
10290fccb52SAndrzej Pietrasiewicz
10390fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
10490fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "fotg210_udc".
10590fccb52SAndrzej Pietrasiewicz
10690fccb52SAndrzej Pietrasiewiczconfig USB_GR_UDC
10790fccb52SAndrzej Pietrasiewicz       tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver"
10890fccb52SAndrzej Pietrasiewicz       depends on HAS_DMA
10990fccb52SAndrzej Pietrasiewicz       help
11090fccb52SAndrzej Pietrasiewicz          Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB
11190fccb52SAndrzej Pietrasiewicz	  VHDL IP core library.
11290fccb52SAndrzej Pietrasiewicz
11390fccb52SAndrzej Pietrasiewiczconfig USB_OMAP
11490fccb52SAndrzej Pietrasiewicz	tristate "OMAP USB Device Controller"
11590fccb52SAndrzej Pietrasiewicz	depends on ARCH_OMAP1
11690fccb52SAndrzej Pietrasiewicz	depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3)
11790fccb52SAndrzej Pietrasiewicz	help
11890fccb52SAndrzej Pietrasiewicz	   Many Texas Instruments OMAP processors have flexible full
11990fccb52SAndrzej Pietrasiewicz	   speed USB device controllers, with support for up to 30
12090fccb52SAndrzej Pietrasiewicz	   endpoints (plus endpoint zero).  This driver supports the
12190fccb52SAndrzej Pietrasiewicz	   controller in the OMAP 1611, and should work with controllers
12290fccb52SAndrzej Pietrasiewicz	   in other OMAP processors too, given minor tweaks.
12390fccb52SAndrzej Pietrasiewicz
12490fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
12590fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "omap_udc" and force all
12690fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
12790fccb52SAndrzej Pietrasiewicz
12890fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X
12990fccb52SAndrzej Pietrasiewicz	tristate "PXA 25x or IXP 4xx"
13090fccb52SAndrzej Pietrasiewicz	depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
13190fccb52SAndrzej Pietrasiewicz	help
13290fccb52SAndrzej Pietrasiewicz	   Intel's PXA 25x series XScale ARM-5TE processors include
13390fccb52SAndrzej Pietrasiewicz	   an integrated full speed USB 1.1 device controller.  The
13490fccb52SAndrzej Pietrasiewicz	   controller in the IXP 4xx series is register-compatible.
13590fccb52SAndrzej Pietrasiewicz
13690fccb52SAndrzej Pietrasiewicz	   It has fifteen fixed-function endpoints, as well as endpoint
13790fccb52SAndrzej Pietrasiewicz	   zero (for control transfers).
13890fccb52SAndrzej Pietrasiewicz
13990fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
14090fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "pxa25x_udc" and force all
14190fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
14290fccb52SAndrzej Pietrasiewicz
14390fccb52SAndrzej Pietrasiewicz# if there's only one gadget driver, using only two bulk endpoints,
14490fccb52SAndrzej Pietrasiewicz# don't waste memory for the other endpoints
14590fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X_SMALL
14690fccb52SAndrzej Pietrasiewicz	depends on USB_PXA25X
14790fccb52SAndrzej Pietrasiewicz	bool
14890fccb52SAndrzej Pietrasiewicz	default n if USB_ETH_RNDIS
14990fccb52SAndrzej Pietrasiewicz	default y if USB_ZERO
15090fccb52SAndrzej Pietrasiewicz	default y if USB_ETH
15190fccb52SAndrzej Pietrasiewicz	default y if USB_G_SERIAL
15290fccb52SAndrzej Pietrasiewicz
15390fccb52SAndrzej Pietrasiewiczconfig USB_R8A66597
15490fccb52SAndrzej Pietrasiewicz	tristate "Renesas R8A66597 USB Peripheral Controller"
15590fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
15690fccb52SAndrzej Pietrasiewicz	help
15790fccb52SAndrzej Pietrasiewicz	   R8A66597 is a discrete USB host and peripheral controller chip that
15890fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
15990fccb52SAndrzej Pietrasiewicz	   It has nine configurable endpoints, and endpoint zero.
16090fccb52SAndrzej Pietrasiewicz
16190fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
16290fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "r8a66597_udc" and force all
16390fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
16490fccb52SAndrzej Pietrasiewicz
16590fccb52SAndrzej Pietrasiewiczconfig USB_RENESAS_USBHS_UDC
16690fccb52SAndrzej Pietrasiewicz	tristate 'Renesas USBHS controller'
167fa9a582dSGeert Uytterhoeven	depends on USB_RENESAS_USBHS && HAS_DMA
16890fccb52SAndrzej Pietrasiewicz	help
16990fccb52SAndrzej Pietrasiewicz	   Renesas USBHS is a discrete USB host and peripheral controller chip
17090fccb52SAndrzej Pietrasiewicz	   that supports both full and high speed USB 2.0 data transfers.
17190fccb52SAndrzej Pietrasiewicz	   It has nine or more configurable endpoints, and endpoint zero.
17290fccb52SAndrzej Pietrasiewicz
17390fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
17490fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "renesas_usbhs" and force all
17590fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
17690fccb52SAndrzej Pietrasiewicz
177746bfe63SYoshihiro Shimodaconfig USB_RENESAS_USB3
178746bfe63SYoshihiro Shimoda	tristate 'Renesas USB3.0 Peripheral controller'
179746bfe63SYoshihiro Shimoda	depends on ARCH_SHMOBILE || COMPILE_TEST
180746bfe63SYoshihiro Shimoda	help
181746bfe63SYoshihiro Shimoda	   Renesas USB3.0 Peripheral controller is a USB peripheral controller
182746bfe63SYoshihiro Shimoda	   that supports super, high, and full speed USB 3.0 data transfers.
183746bfe63SYoshihiro Shimoda
184746bfe63SYoshihiro Shimoda	   Say "y" to link the driver statically, or "m" to build a
185746bfe63SYoshihiro Shimoda	   dynamically linked module called "renesas_usb3" and force all
186746bfe63SYoshihiro Shimoda	   gadget drivers to also be dynamically linked.
187746bfe63SYoshihiro Shimoda
18890fccb52SAndrzej Pietrasiewiczconfig USB_PXA27X
18990fccb52SAndrzej Pietrasiewicz	tristate "PXA 27x"
19090fccb52SAndrzej Pietrasiewicz	help
19190fccb52SAndrzej Pietrasiewicz	   Intel's PXA 27x series XScale ARM v5TE processors include
19290fccb52SAndrzej Pietrasiewicz	   an integrated full speed USB 1.1 device controller.
19390fccb52SAndrzej Pietrasiewicz
19490fccb52SAndrzej Pietrasiewicz	   It has up to 23 endpoints, as well as endpoint zero (for
19590fccb52SAndrzej Pietrasiewicz	   control transfers).
19690fccb52SAndrzej Pietrasiewicz
19790fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
19890fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "pxa27x_udc" and force all
19990fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
20090fccb52SAndrzej Pietrasiewicz
20190fccb52SAndrzej Pietrasiewiczconfig USB_S3C2410
20290fccb52SAndrzej Pietrasiewicz	tristate "S3C2410 USB Device Controller"
20390fccb52SAndrzej Pietrasiewicz	depends on ARCH_S3C24XX
20490fccb52SAndrzej Pietrasiewicz	help
20590fccb52SAndrzej Pietrasiewicz	  Samsung's S3C2410 is an ARM-4 processor with an integrated
20690fccb52SAndrzej Pietrasiewicz	  full speed USB 1.1 device controller.  It has 4 configurable
20790fccb52SAndrzej Pietrasiewicz	  endpoints, as well as endpoint zero (for control transfers).
20890fccb52SAndrzej Pietrasiewicz
20990fccb52SAndrzej Pietrasiewicz	  This driver has been tested on the S3C2410, S3C2412, and
21090fccb52SAndrzej Pietrasiewicz	  S3C2440 processors.
21190fccb52SAndrzej Pietrasiewicz
21290fccb52SAndrzej Pietrasiewiczconfig USB_S3C2410_DEBUG
2136341e62bSChristoph Jaeger	bool "S3C2410 udc debug messages"
21490fccb52SAndrzej Pietrasiewicz	depends on USB_S3C2410
21590fccb52SAndrzej Pietrasiewicz
21690fccb52SAndrzej Pietrasiewiczconfig USB_S3C_HSUDC
21790fccb52SAndrzej Pietrasiewicz	tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
21890fccb52SAndrzej Pietrasiewicz	depends on ARCH_S3C24XX
21990fccb52SAndrzej Pietrasiewicz	help
22090fccb52SAndrzej Pietrasiewicz	  Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
22190fccb52SAndrzej Pietrasiewicz	  integrated with dual speed USB 2.0 device controller. It has
22290fccb52SAndrzej Pietrasiewicz	  8 endpoints, as well as endpoint zero.
22390fccb52SAndrzej Pietrasiewicz
22490fccb52SAndrzej Pietrasiewicz	  This driver has been tested on S3C2416 and S3C2450 processors.
22590fccb52SAndrzej Pietrasiewicz
22690fccb52SAndrzej Pietrasiewiczconfig USB_MV_UDC
22790fccb52SAndrzej Pietrasiewicz	tristate "Marvell USB2.0 Device Controller"
22890fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
22990fccb52SAndrzej Pietrasiewicz	help
23090fccb52SAndrzej Pietrasiewicz	  Marvell Socs (including PXA and MMP series) include a high speed
23190fccb52SAndrzej Pietrasiewicz	  USB2.0 OTG controller, which can be configured as high speed or
23290fccb52SAndrzej Pietrasiewicz	  full speed USB peripheral.
23390fccb52SAndrzej Pietrasiewicz
23490fccb52SAndrzej Pietrasiewiczconfig USB_MV_U3D
23590fccb52SAndrzej Pietrasiewicz	depends on HAS_DMA
23690fccb52SAndrzej Pietrasiewicz	tristate "MARVELL PXA2128 USB 3.0 controller"
23790fccb52SAndrzej Pietrasiewicz	help
23890fccb52SAndrzej Pietrasiewicz	  MARVELL PXA2128 Processor series include a super speed USB3.0 device
23990fccb52SAndrzej Pietrasiewicz	  controller, which support super speed USB peripheral.
24090fccb52SAndrzej Pietrasiewicz
24190fccb52SAndrzej Pietrasiewicz#
24290fccb52SAndrzej Pietrasiewicz# Controllers available in both integrated and discrete versions
24390fccb52SAndrzej Pietrasiewicz#
24490fccb52SAndrzej Pietrasiewicz
24590fccb52SAndrzej Pietrasiewiczconfig USB_M66592
24690fccb52SAndrzej Pietrasiewicz	tristate "Renesas M66592 USB Peripheral Controller"
247*be6708e6SVegard Nossum	depends on HAS_IOMEM
24890fccb52SAndrzej Pietrasiewicz	help
24990fccb52SAndrzej Pietrasiewicz	   M66592 is a discrete USB peripheral controller chip that
25090fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
25190fccb52SAndrzej Pietrasiewicz	   It has seven configurable endpoints, and endpoint zero.
25290fccb52SAndrzej Pietrasiewicz
25390fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
25490fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "m66592_udc" and force all
25590fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
25690fccb52SAndrzej Pietrasiewicz
257efed421aSAshwini Pahujasource "drivers/usb/gadget/udc/bdc/Kconfig"
258efed421aSAshwini Pahuja
25990fccb52SAndrzej Pietrasiewicz#
26090fccb52SAndrzej Pietrasiewicz# Controllers available only in discrete form (and all PCI controllers)
26190fccb52SAndrzej Pietrasiewicz#
26290fccb52SAndrzej Pietrasiewicz
26390fccb52SAndrzej Pietrasiewiczconfig USB_AMD5536UDC
26490fccb52SAndrzej Pietrasiewicz	tristate "AMD5536 UDC"
26590fccb52SAndrzej Pietrasiewicz	depends on PCI
26690fccb52SAndrzej Pietrasiewicz	help
26790fccb52SAndrzej Pietrasiewicz	   The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
26890fccb52SAndrzej Pietrasiewicz	   It is a USB Highspeed DMA capable USB device controller. Beside ep0
26990fccb52SAndrzej Pietrasiewicz	   it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
27090fccb52SAndrzej Pietrasiewicz	   The UDC port supports OTG operation, and may be used as a host port
27190fccb52SAndrzej Pietrasiewicz	   if it's not being used to implement peripheral or OTG roles.
27290fccb52SAndrzej Pietrasiewicz
27390fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
27490fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "amd5536udc" and force all
27590fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
27690fccb52SAndrzej Pietrasiewicz
27790fccb52SAndrzej Pietrasiewiczconfig USB_FSL_QE
27890fccb52SAndrzej Pietrasiewicz	tristate "Freescale QE/CPM USB Device Controller"
27990fccb52SAndrzej Pietrasiewicz	depends on FSL_SOC && (QUICC_ENGINE || CPM)
28090fccb52SAndrzej Pietrasiewicz	help
28190fccb52SAndrzej Pietrasiewicz	   Some of Freescale PowerPC processors have a Full Speed
28290fccb52SAndrzej Pietrasiewicz	   QE/CPM2 USB controller, which support device mode with 4
28390fccb52SAndrzej Pietrasiewicz	   programmable endpoints. This driver supports the
28490fccb52SAndrzej Pietrasiewicz	   controller in the MPC8360 and MPC8272, and should work with
28590fccb52SAndrzej Pietrasiewicz	   controllers having QE or CPM2, given minor tweaks.
28690fccb52SAndrzej Pietrasiewicz
28790fccb52SAndrzej Pietrasiewicz	   Set CONFIG_USB_GADGET to "m" to build this driver as a
28890fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "fsl_qe_udc".
28990fccb52SAndrzej Pietrasiewicz
29090fccb52SAndrzej Pietrasiewiczconfig USB_NET2272
2917562b75bSVegard Nossum	depends on HAS_IOMEM
29290fccb52SAndrzej Pietrasiewicz	tristate "PLX NET2272"
29390fccb52SAndrzej Pietrasiewicz	help
29490fccb52SAndrzej Pietrasiewicz	  PLX NET2272 is a USB peripheral controller which supports
29590fccb52SAndrzej Pietrasiewicz	  both full and high speed USB 2.0 data transfers.
29690fccb52SAndrzej Pietrasiewicz
29790fccb52SAndrzej Pietrasiewicz	  It has three configurable endpoints, as well as endpoint zero
29890fccb52SAndrzej Pietrasiewicz	  (for control transfer).
29990fccb52SAndrzej Pietrasiewicz	  Say "y" to link the driver statically, or "m" to build a
30090fccb52SAndrzej Pietrasiewicz	  dynamically linked module called "net2272" and force all
30190fccb52SAndrzej Pietrasiewicz	  gadget drivers to also be dynamically linked.
30290fccb52SAndrzej Pietrasiewicz
30390fccb52SAndrzej Pietrasiewiczconfig USB_NET2272_DMA
3046341e62bSChristoph Jaeger	bool "Support external DMA controller"
30590fccb52SAndrzej Pietrasiewicz	depends on USB_NET2272 && HAS_DMA
30690fccb52SAndrzej Pietrasiewicz	help
30790fccb52SAndrzej Pietrasiewicz	  The NET2272 part can optionally support an external DMA
30890fccb52SAndrzej Pietrasiewicz	  controller, but your board has to have support in the
30990fccb52SAndrzej Pietrasiewicz	  driver itself.
31090fccb52SAndrzej Pietrasiewicz
31190fccb52SAndrzej Pietrasiewicz	  If unsure, say "N" here.  The driver works fine in PIO mode.
31290fccb52SAndrzej Pietrasiewicz
31390fccb52SAndrzej Pietrasiewiczconfig USB_NET2280
31490fccb52SAndrzej Pietrasiewicz	tristate "NetChip 228x / PLX USB338x"
31590fccb52SAndrzej Pietrasiewicz	depends on PCI
31690fccb52SAndrzej Pietrasiewicz	help
31790fccb52SAndrzej Pietrasiewicz	   NetChip 2280 / 2282 is a PCI based USB peripheral controller which
31890fccb52SAndrzej Pietrasiewicz	   supports both full and high speed USB 2.0 data transfers.
31990fccb52SAndrzej Pietrasiewicz
32090fccb52SAndrzej Pietrasiewicz	   It has six configurable endpoints, as well as endpoint zero
32190fccb52SAndrzej Pietrasiewicz	   (for control transfers) and several endpoints with dedicated
32290fccb52SAndrzej Pietrasiewicz	   functions.
32390fccb52SAndrzej Pietrasiewicz
32490fccb52SAndrzej Pietrasiewicz	   PLX 3380 / 3382 is a PCIe based USB peripheral controller which
32590fccb52SAndrzej Pietrasiewicz	   supports full, high speed USB 2.0 and super speed USB 3.0
32690fccb52SAndrzej Pietrasiewicz	   data transfers.
32790fccb52SAndrzej Pietrasiewicz
32890fccb52SAndrzej Pietrasiewicz	   It has eight configurable endpoints, as well as endpoint zero
32990fccb52SAndrzej Pietrasiewicz	   (for control transfers) and several endpoints with dedicated
33090fccb52SAndrzej Pietrasiewicz	   functions.
33190fccb52SAndrzej Pietrasiewicz
33290fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
33390fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "net2280" and force all
33490fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
33590fccb52SAndrzej Pietrasiewicz
33690fccb52SAndrzej Pietrasiewiczconfig USB_GOKU
33790fccb52SAndrzej Pietrasiewicz	tristate "Toshiba TC86C001 'Goku-S'"
33890fccb52SAndrzej Pietrasiewicz	depends on PCI
33990fccb52SAndrzej Pietrasiewicz	help
34090fccb52SAndrzej Pietrasiewicz	   The Toshiba TC86C001 is a PCI device which includes controllers
34190fccb52SAndrzej Pietrasiewicz	   for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
34290fccb52SAndrzej Pietrasiewicz
34390fccb52SAndrzej Pietrasiewicz	   The device controller has three configurable (bulk or interrupt)
34490fccb52SAndrzej Pietrasiewicz	   endpoints, plus endpoint zero (for control transfers).
34590fccb52SAndrzej Pietrasiewicz
34690fccb52SAndrzej Pietrasiewicz	   Say "y" to link the driver statically, or "m" to build a
34790fccb52SAndrzej Pietrasiewicz	   dynamically linked module called "goku_udc" and to force all
34890fccb52SAndrzej Pietrasiewicz	   gadget drivers to also be dynamically linked.
34990fccb52SAndrzej Pietrasiewicz
35090fccb52SAndrzej Pietrasiewiczconfig USB_EG20T
351a68df706SBryan O'Donoghue	tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
35290fccb52SAndrzej Pietrasiewicz	depends on PCI
35390fccb52SAndrzej Pietrasiewicz	help
35490fccb52SAndrzej Pietrasiewicz	  This is a USB device driver for EG20T PCH.
35590fccb52SAndrzej Pietrasiewicz	  EG20T PCH is the platform controller hub that is used in Intel's
35690fccb52SAndrzej Pietrasiewicz	  general embedded platform. EG20T PCH has USB device interface.
35790fccb52SAndrzej Pietrasiewicz	  Using this interface, it is able to access system devices connected
35890fccb52SAndrzej Pietrasiewicz	  to USB device.
35990fccb52SAndrzej Pietrasiewicz	  This driver enables USB device function.
36090fccb52SAndrzej Pietrasiewicz	  USB device is a USB peripheral controller which
36190fccb52SAndrzej Pietrasiewicz	  supports both full and high speed USB 2.0 data transfers.
36290fccb52SAndrzej Pietrasiewicz	  This driver supports both control transfer and bulk transfer modes.
36390fccb52SAndrzej Pietrasiewicz	  This driver dose not support interrupt transfer or isochronous
36490fccb52SAndrzej Pietrasiewicz	  transfer modes.
36590fccb52SAndrzej Pietrasiewicz
36690fccb52SAndrzej Pietrasiewicz	  This driver also can be used for LAPIS Semiconductor's ML7213 which is
36790fccb52SAndrzej Pietrasiewicz	  for IVI(In-Vehicle Infotainment) use.
36890fccb52SAndrzej Pietrasiewicz	  ML7831 is for general purpose use.
36990fccb52SAndrzej Pietrasiewicz	  ML7213/ML7831 is companion chip for Intel Atom E6xx series.
37090fccb52SAndrzej Pietrasiewicz	  ML7213/ML7831 is completely compatible for Intel EG20T PCH.
37190fccb52SAndrzej Pietrasiewicz
372a68df706SBryan O'Donoghue	  This driver can be used with Intel's Quark X1000 SOC platform
3731f7c5166SSubbaraya Sundeep Bhatta
3741f7c5166SSubbaraya Sundeep Bhattaconfig USB_GADGET_XILINX
3751f7c5166SSubbaraya Sundeep Bhatta	tristate "Xilinx USB Driver"
376f1113be1SGeert Uytterhoeven	depends on HAS_DMA
3771f7c5166SSubbaraya Sundeep Bhatta	depends on OF || COMPILE_TEST
3781f7c5166SSubbaraya Sundeep Bhatta	help
3791f7c5166SSubbaraya Sundeep Bhatta	  USB peripheral controller driver for Xilinx USB2 device.
3801f7c5166SSubbaraya Sundeep Bhatta	  Xilinx USB2 device is a soft IP which supports both full
3811f7c5166SSubbaraya Sundeep Bhatta	  and high speed USB 2.0 data transfers. It has seven configurable
3821f7c5166SSubbaraya Sundeep Bhatta	  endpoints(bulk or interrupt or isochronous), as well as
3831f7c5166SSubbaraya Sundeep Bhatta	  endpoint zero(for control transfers).
3841f7c5166SSubbaraya Sundeep Bhatta
3851f7c5166SSubbaraya Sundeep Bhatta	  Say "y" to link the driver statically, or "m" to build a
3861f7c5166SSubbaraya Sundeep Bhatta	  dynamically linked module called "udc-xilinx" and force all
3871f7c5166SSubbaraya Sundeep Bhatta	  gadget drivers to also be dynamically linked.
3881f7c5166SSubbaraya Sundeep Bhatta
38990fccb52SAndrzej Pietrasiewicz#
39090fccb52SAndrzej Pietrasiewicz# LAST -- dummy/emulated controller
39190fccb52SAndrzej Pietrasiewicz#
39290fccb52SAndrzej Pietrasiewicz
39390fccb52SAndrzej Pietrasiewiczconfig USB_DUMMY_HCD
39490fccb52SAndrzej Pietrasiewicz	tristate "Dummy HCD (DEVELOPMENT)"
39590fccb52SAndrzej Pietrasiewicz	depends on USB=y || (USB=m && USB_GADGET=m)
39690fccb52SAndrzej Pietrasiewicz	help
39790fccb52SAndrzej Pietrasiewicz	  This host controller driver emulates USB, looping all data transfer
39890fccb52SAndrzej Pietrasiewicz	  requests back to a USB "gadget driver" in the same host.  The host
39990fccb52SAndrzej Pietrasiewicz	  side is the master; the gadget side is the slave.  Gadget drivers
40090fccb52SAndrzej Pietrasiewicz	  can be high, full, or low speed; and they have access to endpoints
40190fccb52SAndrzej Pietrasiewicz	  like those from NET2280, PXA2xx, or SA1100 hardware.
40290fccb52SAndrzej Pietrasiewicz
40390fccb52SAndrzej Pietrasiewicz	  This may help in some stages of creating a driver to embed in a
40490fccb52SAndrzej Pietrasiewicz	  Linux device, since it lets you debug several parts of the gadget
40590fccb52SAndrzej Pietrasiewicz	  driver without its hardware or drivers being involved.
40690fccb52SAndrzej Pietrasiewicz
40790fccb52SAndrzej Pietrasiewicz	  Since such a gadget side driver needs to interoperate with a host
40890fccb52SAndrzej Pietrasiewicz	  side Linux-USB device driver, this may help to debug both sides
40990fccb52SAndrzej Pietrasiewicz	  of a USB protocol stack.
41090fccb52SAndrzej Pietrasiewicz
41190fccb52SAndrzej Pietrasiewicz	  Say "y" to link the driver statically, or "m" to build a
41290fccb52SAndrzej Pietrasiewicz	  dynamically linked module called "dummy_hcd" and force all
41390fccb52SAndrzej Pietrasiewicz	  gadget drivers to also be dynamically linked.
41490fccb52SAndrzej Pietrasiewicz
41590fccb52SAndrzej Pietrasiewicz# NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
41690fccb52SAndrzej Pietrasiewicz# first and will be selected by default.
41790fccb52SAndrzej Pietrasiewicz
41890fccb52SAndrzej Pietrasiewiczendmenu
419