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_GR_UDC 10690fccb52SAndrzej Pietrasiewicz tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver" 10790fccb52SAndrzej Pietrasiewicz depends on HAS_DMA 10890fccb52SAndrzej Pietrasiewicz help 10990fccb52SAndrzej Pietrasiewicz Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB 11090fccb52SAndrzej Pietrasiewicz VHDL IP core library. 11190fccb52SAndrzej Pietrasiewicz 11290fccb52SAndrzej Pietrasiewiczconfig USB_OMAP 11390fccb52SAndrzej Pietrasiewicz tristate "OMAP USB Device Controller" 11490fccb52SAndrzej Pietrasiewicz depends on ARCH_OMAP1 11590fccb52SAndrzej Pietrasiewicz help 11690fccb52SAndrzej Pietrasiewicz Many Texas Instruments OMAP processors have flexible full 11790fccb52SAndrzej Pietrasiewicz speed USB device controllers, with support for up to 30 11890fccb52SAndrzej Pietrasiewicz endpoints (plus endpoint zero). This driver supports the 11990fccb52SAndrzej Pietrasiewicz controller in the OMAP 1611, and should work with controllers 12090fccb52SAndrzej Pietrasiewicz in other OMAP processors too, given minor tweaks. 12190fccb52SAndrzej Pietrasiewicz 12290fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 12390fccb52SAndrzej Pietrasiewicz dynamically linked module called "omap_udc" and force all 12490fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 12590fccb52SAndrzej Pietrasiewicz 12690fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X 12790fccb52SAndrzej Pietrasiewicz tristate "PXA 25x or IXP 4xx" 12890fccb52SAndrzej Pietrasiewicz depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 1291b4ea40bSVegard Nossum depends on HAS_IOMEM 13090fccb52SAndrzej Pietrasiewicz help 13190fccb52SAndrzej Pietrasiewicz Intel's PXA 25x series XScale ARM-5TE processors include 13290fccb52SAndrzej Pietrasiewicz an integrated full speed USB 1.1 device controller. The 13390fccb52SAndrzej Pietrasiewicz controller in the IXP 4xx series is register-compatible. 13490fccb52SAndrzej Pietrasiewicz 13590fccb52SAndrzej Pietrasiewicz It has fifteen fixed-function endpoints, as well as endpoint 13690fccb52SAndrzej Pietrasiewicz zero (for control transfers). 13790fccb52SAndrzej Pietrasiewicz 13890fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 13990fccb52SAndrzej Pietrasiewicz dynamically linked module called "pxa25x_udc" and force all 14090fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 14190fccb52SAndrzej Pietrasiewicz 14290fccb52SAndrzej Pietrasiewicz# if there's only one gadget driver, using only two bulk endpoints, 14390fccb52SAndrzej Pietrasiewicz# don't waste memory for the other endpoints 14490fccb52SAndrzej Pietrasiewiczconfig USB_PXA25X_SMALL 14590fccb52SAndrzej Pietrasiewicz depends on USB_PXA25X 14690fccb52SAndrzej Pietrasiewicz bool 14790fccb52SAndrzej Pietrasiewicz default n if USB_ETH_RNDIS 14890fccb52SAndrzej Pietrasiewicz default y if USB_ZERO 14990fccb52SAndrzej Pietrasiewicz default y if USB_ETH 15090fccb52SAndrzej Pietrasiewicz default y if USB_G_SERIAL 15190fccb52SAndrzej Pietrasiewicz 15290fccb52SAndrzej Pietrasiewiczconfig USB_R8A66597 15390fccb52SAndrzej Pietrasiewicz tristate "Renesas R8A66597 USB Peripheral Controller" 15490fccb52SAndrzej Pietrasiewicz depends on HAS_DMA 15590fccb52SAndrzej Pietrasiewicz help 15690fccb52SAndrzej Pietrasiewicz R8A66597 is a discrete USB host and peripheral controller chip that 15790fccb52SAndrzej Pietrasiewicz supports both full and high speed USB 2.0 data transfers. 15890fccb52SAndrzej Pietrasiewicz It has nine configurable endpoints, and endpoint zero. 15990fccb52SAndrzej Pietrasiewicz 16090fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 16190fccb52SAndrzej Pietrasiewicz dynamically linked module called "r8a66597_udc" and force all 16290fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 16390fccb52SAndrzej Pietrasiewicz 16490fccb52SAndrzej Pietrasiewiczconfig USB_RENESAS_USBHS_UDC 16590fccb52SAndrzej Pietrasiewicz tristate 'Renesas USBHS controller' 166cd91a0e9SGeert Uytterhoeven depends on USB_RENESAS_USBHS 16790fccb52SAndrzej Pietrasiewicz help 16890fccb52SAndrzej Pietrasiewicz Renesas USBHS is a discrete USB host and peripheral controller chip 16990fccb52SAndrzej Pietrasiewicz that supports both full and high speed USB 2.0 data transfers. 17090fccb52SAndrzej Pietrasiewicz It has nine or more configurable endpoints, and endpoint zero. 17190fccb52SAndrzej Pietrasiewicz 17290fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 17390fccb52SAndrzej Pietrasiewicz dynamically linked module called "renesas_usbhs" and force all 17490fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 17590fccb52SAndrzej Pietrasiewicz 1769cad72dfSBiju Dasconfig USB_RZV2M_USB3DRD 1779cad72dfSBiju Das tristate 'Renesas USB3.1 DRD controller' 1789cad72dfSBiju Das depends on ARCH_R9A09G011 || COMPILE_TEST 1799cad72dfSBiju Das help 1809cad72dfSBiju Das Renesas USB3.1 DRD controller is a USB DRD controller 1819cad72dfSBiju Das that supports both host and device switching. 1829cad72dfSBiju Das 1839cad72dfSBiju Das Say "y" to link the driver statically, or "m" to build a 1849cad72dfSBiju Das dynamically linked module called "rzv2m_usb3drd". 1859cad72dfSBiju Das 186746bfe63SYoshihiro Shimodaconfig USB_RENESAS_USB3 187746bfe63SYoshihiro Shimoda tristate 'Renesas USB3.0 Peripheral controller' 188dd9fee67SSimon Horman depends on ARCH_RENESAS || COMPILE_TEST 189ec5499d3SArnd Bergmann depends on USB_RZV2M_USB3DRD || !USB_RZV2M_USB3DRD 190cd91a0e9SGeert Uytterhoeven depends on EXTCON 19139facfa0SYoshihiro Shimoda select USB_ROLE_SWITCH 192746bfe63SYoshihiro Shimoda help 193746bfe63SYoshihiro Shimoda Renesas USB3.0 Peripheral controller is a USB peripheral controller 194746bfe63SYoshihiro Shimoda that supports super, high, and full speed USB 3.0 data transfers. 195746bfe63SYoshihiro Shimoda 196746bfe63SYoshihiro Shimoda Say "y" to link the driver statically, or "m" to build a 197746bfe63SYoshihiro Shimoda dynamically linked module called "renesas_usb3" and force all 198746bfe63SYoshihiro Shimoda gadget drivers to also be dynamically linked. 199746bfe63SYoshihiro Shimoda 2003e6e14ffSHerve Codinaconfig USB_RENESAS_USBF 2013e6e14ffSHerve Codina tristate 'Renesas USB Function controller' 2023e6e14ffSHerve Codina depends on ARCH_RENESAS || COMPILE_TEST 2033e6e14ffSHerve Codina help 2043e6e14ffSHerve Codina Renesas USB Function controller is a USB peripheral controller 2053e6e14ffSHerve Codina available on RZ/N1 Renesas SoCs. 2063e6e14ffSHerve Codina 2073e6e14ffSHerve Codina Say "y" to link the driver statically, or "m" to build a 2083e6e14ffSHerve Codina dynamically linked module called "renesas_usbf" and force all 2093e6e14ffSHerve Codina gadget drivers to also be dynamically linked. 2103e6e14ffSHerve Codina 21190fccb52SAndrzej Pietrasiewiczconfig USB_PXA27X 21290fccb52SAndrzej Pietrasiewicz tristate "PXA 27x" 213c470ba38SVegard Nossum depends on HAS_IOMEM 21490fccb52SAndrzej Pietrasiewicz help 21590fccb52SAndrzej Pietrasiewicz Intel's PXA 27x series XScale ARM v5TE processors include 21690fccb52SAndrzej Pietrasiewicz an integrated full speed USB 1.1 device controller. 21790fccb52SAndrzej Pietrasiewicz 21890fccb52SAndrzej Pietrasiewicz It has up to 23 endpoints, as well as endpoint zero (for 21990fccb52SAndrzej Pietrasiewicz control transfers). 22090fccb52SAndrzej Pietrasiewicz 22190fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 22290fccb52SAndrzej Pietrasiewicz dynamically linked module called "pxa27x_udc" and force all 22390fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 22490fccb52SAndrzej Pietrasiewicz 22597b3ffa2SRaviteja Garimellaconfig USB_SNP_CORE 2261b9f35adSRaviteja Garimella depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT) 227a9ef5c47SGeert Uytterhoeven depends on HAS_DMA 22897b3ffa2SRaviteja Garimella tristate 22997b3ffa2SRaviteja Garimella help 23097b3ffa2SRaviteja Garimella This enables core driver support for Synopsys USB 2.0 Device 23197b3ffa2SRaviteja Garimella controller. 23297b3ffa2SRaviteja Garimella 23397b3ffa2SRaviteja Garimella This will be enabled when PCI or Platform driver for this UDC is 23497b3ffa2SRaviteja Garimella selected. Currently, this will be enabled by USB_SNP_UDC_PLAT or 23597b3ffa2SRaviteja Garimella USB_AMD5536UDC options. 23697b3ffa2SRaviteja Garimella 23797b3ffa2SRaviteja Garimella This IP is different to the High Speed OTG IP that can be enabled 23897b3ffa2SRaviteja Garimella by selecting USB_DWC2 or USB_DWC3 options. 23997b3ffa2SRaviteja Garimella 2401b9f35adSRaviteja Garimellaconfig USB_SNP_UDC_PLAT 2411b9f35adSRaviteja Garimella tristate "Synopsys USB 2.0 Device controller" 242a9ef5c47SGeert Uytterhoeven depends on USB_GADGET && OF && HAS_DMA 243641663a1SRandy Dunlap depends on EXTCON || EXTCON=n 2441b9f35adSRaviteja Garimella select USB_SNP_CORE 2451b9f35adSRaviteja Garimella default ARCH_BCM_IPROC 2461b9f35adSRaviteja Garimella help 2471b9f35adSRaviteja Garimella This adds Platform Device support for Synopsys Designware core 2481b9f35adSRaviteja Garimella AHB subsystem USB2.0 Device Controller (UDC). 2491b9f35adSRaviteja Garimella 2501b9f35adSRaviteja Garimella This driver works with UDCs integrated into Broadcom's Northstar2 2511b9f35adSRaviteja Garimella and Cygnus SoCs. 2521b9f35adSRaviteja Garimella 2531b9f35adSRaviteja Garimella If unsure, say N. 25490fccb52SAndrzej Pietrasiewicz# 25590fccb52SAndrzej Pietrasiewicz# Controllers available in both integrated and discrete versions 25690fccb52SAndrzej Pietrasiewicz# 25790fccb52SAndrzej Pietrasiewicz 25890fccb52SAndrzej Pietrasiewiczconfig USB_M66592 25990fccb52SAndrzej Pietrasiewicz tristate "Renesas M66592 USB Peripheral Controller" 260be6708e6SVegard Nossum depends on HAS_IOMEM 26190fccb52SAndrzej Pietrasiewicz help 26290fccb52SAndrzej Pietrasiewicz M66592 is a discrete USB peripheral controller chip that 26390fccb52SAndrzej Pietrasiewicz supports both full and high speed USB 2.0 data transfers. 26490fccb52SAndrzej Pietrasiewicz It has seven configurable endpoints, and endpoint zero. 26590fccb52SAndrzej Pietrasiewicz 26690fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 26790fccb52SAndrzej Pietrasiewicz dynamically linked module called "m66592_udc" and force all 26890fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 26990fccb52SAndrzej Pietrasiewicz 270efed421aSAshwini Pahujasource "drivers/usb/gadget/udc/bdc/Kconfig" 271efed421aSAshwini Pahuja 27290fccb52SAndrzej Pietrasiewicz# 27390fccb52SAndrzej Pietrasiewicz# Controllers available only in discrete form (and all PCI controllers) 27490fccb52SAndrzej Pietrasiewicz# 27590fccb52SAndrzej Pietrasiewicz 27690fccb52SAndrzej Pietrasiewiczconfig USB_AMD5536UDC 27790fccb52SAndrzej Pietrasiewicz tristate "AMD5536 UDC" 2788097cf2fSRandy Dunlap depends on USB_PCI && HAS_DMA 27997b3ffa2SRaviteja Garimella select USB_SNP_CORE 28090fccb52SAndrzej Pietrasiewicz help 28190fccb52SAndrzej Pietrasiewicz The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 28290fccb52SAndrzej Pietrasiewicz It is a USB Highspeed DMA capable USB device controller. Beside ep0 28390fccb52SAndrzej Pietrasiewicz it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 28490fccb52SAndrzej Pietrasiewicz The UDC port supports OTG operation, and may be used as a host port 28590fccb52SAndrzej Pietrasiewicz if it's not being used to implement peripheral or OTG roles. 28690fccb52SAndrzej Pietrasiewicz 28797b3ffa2SRaviteja Garimella This UDC is based on Synopsys USB device controller IP and selects 28897b3ffa2SRaviteja Garimella CONFIG_USB_SNP_CORE option to build the core driver. 28997b3ffa2SRaviteja Garimella 29090fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 29190fccb52SAndrzej Pietrasiewicz dynamically linked module called "amd5536udc" and force all 29290fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 29390fccb52SAndrzej Pietrasiewicz 29490fccb52SAndrzej Pietrasiewiczconfig USB_FSL_QE 29590fccb52SAndrzej Pietrasiewicz tristate "Freescale QE/CPM USB Device Controller" 29690fccb52SAndrzej Pietrasiewicz depends on FSL_SOC && (QUICC_ENGINE || CPM) 297a0548b26SGeert Uytterhoeven depends on !64BIT || BROKEN 29890fccb52SAndrzej Pietrasiewicz help 29990fccb52SAndrzej Pietrasiewicz Some of Freescale PowerPC processors have a Full Speed 30090fccb52SAndrzej Pietrasiewicz QE/CPM2 USB controller, which support device mode with 4 30190fccb52SAndrzej Pietrasiewicz programmable endpoints. This driver supports the 30290fccb52SAndrzej Pietrasiewicz controller in the MPC8360 and MPC8272, and should work with 30390fccb52SAndrzej Pietrasiewicz controllers having QE or CPM2, given minor tweaks. 30490fccb52SAndrzej Pietrasiewicz 30590fccb52SAndrzej Pietrasiewicz Set CONFIG_USB_GADGET to "m" to build this driver as a 30690fccb52SAndrzej Pietrasiewicz dynamically linked module called "fsl_qe_udc". 30790fccb52SAndrzej Pietrasiewicz 30890fccb52SAndrzej Pietrasiewiczconfig USB_NET2280 3095185c913STim Harvey tristate "NetChip NET228x / PLX USB3x8x" 3102c93e790Syuan linyu depends on USB_PCI 31190fccb52SAndrzej Pietrasiewicz help 31290fccb52SAndrzej Pietrasiewicz NetChip 2280 / 2282 is a PCI based USB peripheral controller which 31390fccb52SAndrzej Pietrasiewicz supports both full and high speed USB 2.0 data transfers. 31490fccb52SAndrzej Pietrasiewicz 31590fccb52SAndrzej Pietrasiewicz It has six configurable endpoints, as well as endpoint zero 31690fccb52SAndrzej Pietrasiewicz (for control transfers) and several endpoints with dedicated 31790fccb52SAndrzej Pietrasiewicz functions. 31890fccb52SAndrzej Pietrasiewicz 3195185c913STim Harvey PLX 2380 is a PCIe version of the PLX 2380. 3205185c913STim Harvey 32190fccb52SAndrzej Pietrasiewicz PLX 3380 / 3382 is a PCIe based USB peripheral controller which 32290fccb52SAndrzej Pietrasiewicz supports full, high speed USB 2.0 and super speed USB 3.0 32390fccb52SAndrzej Pietrasiewicz data transfers. 32490fccb52SAndrzej Pietrasiewicz 32590fccb52SAndrzej Pietrasiewicz It has eight configurable endpoints, as well as endpoint zero 32690fccb52SAndrzej Pietrasiewicz (for control transfers) and several endpoints with dedicated 32790fccb52SAndrzej Pietrasiewicz functions. 32890fccb52SAndrzej Pietrasiewicz 32990fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 33090fccb52SAndrzej Pietrasiewicz dynamically linked module called "net2280" and force all 33190fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 33290fccb52SAndrzej Pietrasiewicz 33390fccb52SAndrzej Pietrasiewiczconfig USB_GOKU 33490fccb52SAndrzej Pietrasiewicz tristate "Toshiba TC86C001 'Goku-S'" 3352c93e790Syuan linyu depends on USB_PCI 33690fccb52SAndrzej Pietrasiewicz help 33790fccb52SAndrzej Pietrasiewicz The Toshiba TC86C001 is a PCI device which includes controllers 33890fccb52SAndrzej Pietrasiewicz for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 33990fccb52SAndrzej Pietrasiewicz 34090fccb52SAndrzej Pietrasiewicz The device controller has three configurable (bulk or interrupt) 34190fccb52SAndrzej Pietrasiewicz endpoints, plus endpoint zero (for control transfers). 34290fccb52SAndrzej Pietrasiewicz 34390fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 34490fccb52SAndrzej Pietrasiewicz dynamically linked module called "goku_udc" and to force all 34590fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 34690fccb52SAndrzej Pietrasiewicz 34790fccb52SAndrzej Pietrasiewiczconfig USB_EG20T 348a68df706SBryan O'Donoghue tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" 3492c93e790Syuan linyu depends on USB_PCI 35090fccb52SAndrzej Pietrasiewicz help 35190fccb52SAndrzej Pietrasiewicz This is a USB device driver for EG20T PCH. 35290fccb52SAndrzej Pietrasiewicz EG20T PCH is the platform controller hub that is used in Intel's 35390fccb52SAndrzej Pietrasiewicz general embedded platform. EG20T PCH has USB device interface. 35490fccb52SAndrzej Pietrasiewicz Using this interface, it is able to access system devices connected 35590fccb52SAndrzej Pietrasiewicz to USB device. 35690fccb52SAndrzej Pietrasiewicz This driver enables USB device function. 35790fccb52SAndrzej Pietrasiewicz USB device is a USB peripheral controller which 35890fccb52SAndrzej Pietrasiewicz supports both full and high speed USB 2.0 data transfers. 35990fccb52SAndrzej Pietrasiewicz This driver supports both control transfer and bulk transfer modes. 36090fccb52SAndrzej Pietrasiewicz This driver dose not support interrupt transfer or isochronous 36190fccb52SAndrzej Pietrasiewicz transfer modes. 36290fccb52SAndrzej Pietrasiewicz 36390fccb52SAndrzej Pietrasiewicz This driver also can be used for LAPIS Semiconductor's ML7213 which is 36490fccb52SAndrzej Pietrasiewicz for IVI(In-Vehicle Infotainment) use. 36590fccb52SAndrzej Pietrasiewicz ML7831 is for general purpose use. 36690fccb52SAndrzej Pietrasiewicz ML7213/ML7831 is companion chip for Intel Atom E6xx series. 36790fccb52SAndrzej Pietrasiewicz ML7213/ML7831 is completely compatible for Intel EG20T PCH. 36890fccb52SAndrzej Pietrasiewicz 369a68df706SBryan O'Donoghue This driver can be used with Intel's Quark X1000 SOC platform 3701f7c5166SSubbaraya Sundeep Bhatta 3711f7c5166SSubbaraya Sundeep Bhattaconfig USB_GADGET_XILINX 3721f7c5166SSubbaraya Sundeep Bhatta tristate "Xilinx USB Driver" 373f1113be1SGeert Uytterhoeven depends on HAS_DMA 3746f1f0ad9SJean Delvare depends on OF 3751f7c5166SSubbaraya Sundeep Bhatta help 3761f7c5166SSubbaraya Sundeep Bhatta USB peripheral controller driver for Xilinx USB2 device. 3771f7c5166SSubbaraya Sundeep Bhatta Xilinx USB2 device is a soft IP which supports both full 3781f7c5166SSubbaraya Sundeep Bhatta and high speed USB 2.0 data transfers. It has seven configurable 3791f7c5166SSubbaraya Sundeep Bhatta endpoints(bulk or interrupt or isochronous), as well as 3801f7c5166SSubbaraya Sundeep Bhatta endpoint zero(for control transfers). 3811f7c5166SSubbaraya Sundeep Bhatta 3821f7c5166SSubbaraya Sundeep Bhatta Say "y" to link the driver statically, or "m" to build a 3831f7c5166SSubbaraya Sundeep Bhatta dynamically linked module called "udc-xilinx" and force all 3841f7c5166SSubbaraya Sundeep Bhatta gadget drivers to also be dynamically linked. 3851f7c5166SSubbaraya Sundeep Bhatta 38648ba02b2SJassi Brarconfig USB_MAX3420_UDC 38748ba02b2SJassi Brar tristate "MAX3420 (USB-over-SPI) support" 38848ba02b2SJassi Brar depends on SPI 38948ba02b2SJassi Brar help 39048ba02b2SJassi Brar The Maxim MAX3420 chip supports USB2.0 full-speed peripheral mode. 39148ba02b2SJassi Brar The MAX3420 is run by SPI interface, and hence the dependency. 39248ba02b2SJassi Brar 39348ba02b2SJassi Brar To compile this driver as a module, choose M here: the module will 39448ba02b2SJassi Brar be called max3420_udc 39548ba02b2SJassi Brar 39649db4272SNagarjuna Kristamconfig USB_TEGRA_XUDC 39749db4272SNagarjuna Kristam tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller" 39849db4272SNagarjuna Kristam depends on ARCH_TEGRA || COMPILE_TEST 39949db4272SNagarjuna Kristam depends on PHY_TEGRA_XUSB 40049db4272SNagarjuna Kristam help 40149db4272SNagarjuna Kristam Enables NVIDIA Tegra USB 3.0 device mode controller driver. 40249db4272SNagarjuna Kristam 40349db4272SNagarjuna Kristam Say "y" to link the driver statically, or "m" to build a 40449db4272SNagarjuna Kristam dynamically linked module called "tegra_xudc" and force all 40549db4272SNagarjuna Kristam gadget drivers to also be dynamically linked. 40649db4272SNagarjuna Kristam 407055276c1SNeal Liuconfig USB_ASPEED_UDC 408055276c1SNeal Liu tristate "Aspeed UDC driver support" 409055276c1SNeal Liu depends on ARCH_ASPEED || COMPILE_TEST 410055276c1SNeal Liu depends on USB_LIBCOMPOSITE 411055276c1SNeal Liu help 412055276c1SNeal Liu Enables Aspeed USB2.0 Device Controller driver for AST260x 413055276c1SNeal Liu family SoCs. The controller supports 1 control endpoint and 414055276c1SNeal Liu 4 programmable endpoints. 415055276c1SNeal Liu 416055276c1SNeal Liu Say "y" to link the driver statically, or "m" to build a 417055276c1SNeal Liu dynamically linked module called "aspeed_udc" and force all 418055276c1SNeal Liu gadget drivers to also be dynamically linked. 419055276c1SNeal Liu 4207ecca2a4SBenjamin Herrenschmidtsource "drivers/usb/gadget/udc/aspeed-vhub/Kconfig" 4217ecca2a4SBenjamin Herrenschmidt 422*3eb1f1efSPawel Laszczaksource "drivers/usb/gadget/udc/cdns2/Kconfig" 423*3eb1f1efSPawel Laszczak 42490fccb52SAndrzej Pietrasiewicz# 42590fccb52SAndrzej Pietrasiewicz# LAST -- dummy/emulated controller 42690fccb52SAndrzej Pietrasiewicz# 42790fccb52SAndrzej Pietrasiewicz 42890fccb52SAndrzej Pietrasiewiczconfig USB_DUMMY_HCD 42990fccb52SAndrzej Pietrasiewicz tristate "Dummy HCD (DEVELOPMENT)" 43090fccb52SAndrzej Pietrasiewicz depends on USB=y || (USB=m && USB_GADGET=m) 43190fccb52SAndrzej Pietrasiewicz help 43290fccb52SAndrzej Pietrasiewicz This host controller driver emulates USB, looping all data transfer 43390fccb52SAndrzej Pietrasiewicz requests back to a USB "gadget driver" in the same host. The host 434b9b70170SGreg Kroah-Hartman side is the controller; the gadget side is the device. Gadget drivers 43590fccb52SAndrzej Pietrasiewicz can be high, full, or low speed; and they have access to endpoints 43690fccb52SAndrzej Pietrasiewicz like those from NET2280, PXA2xx, or SA1100 hardware. 43790fccb52SAndrzej Pietrasiewicz 43890fccb52SAndrzej Pietrasiewicz This may help in some stages of creating a driver to embed in a 43990fccb52SAndrzej Pietrasiewicz Linux device, since it lets you debug several parts of the gadget 44090fccb52SAndrzej Pietrasiewicz driver without its hardware or drivers being involved. 44190fccb52SAndrzej Pietrasiewicz 44290fccb52SAndrzej Pietrasiewicz Since such a gadget side driver needs to interoperate with a host 44390fccb52SAndrzej Pietrasiewicz side Linux-USB device driver, this may help to debug both sides 44490fccb52SAndrzej Pietrasiewicz of a USB protocol stack. 44590fccb52SAndrzej Pietrasiewicz 44690fccb52SAndrzej Pietrasiewicz Say "y" to link the driver statically, or "m" to build a 44790fccb52SAndrzej Pietrasiewicz dynamically linked module called "dummy_hcd" and force all 44890fccb52SAndrzej Pietrasiewicz gadget drivers to also be dynamically linked. 44990fccb52SAndrzej Pietrasiewicz 45090fccb52SAndrzej Pietrasiewicz# NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 45190fccb52SAndrzej Pietrasiewicz# first and will be selected by default. 45290fccb52SAndrzej Pietrasiewicz 45390fccb52SAndrzej Pietrasiewiczendmenu 454