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