| # SPDX-License-Identifier: GPL-2.0 |
| # |
| # USB Gadget support on a system involves |
| # (a) a peripheral controller, and |
| # (b) the gadget driver using it. |
| # |
| # NOTE: Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! |
| # |
| # - Host systems (like PCs) need CONFIG_USB (with "A" jacks). |
| # - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). |
| # - Some systems have both kinds of controllers. |
| # |
| # With help from a special transceiver and a "Mini-AB" jack, systems with |
| # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). |
| # |
| |
| # |
| # USB Peripheral Controller Support |
| # |
| # The order here is alphabetical, except that integrated controllers go |
| # before discrete ones so they will be the initial/default value: |
| # - integrated/SOC controllers first |
| # - licensed IP used in both SOC and discrete versions |
| # - discrete ones (including all PCI-only controllers) |
| # - debug/dummy gadget+hcd is last. |
| # |
| menu "USB Peripheral Controller" |
| |
| # |
| # Integrated controllers |
| # |
| |
| config USB_AT91 |
| tristate "Atmel AT91 USB Device Port" |
| depends on ARCH_AT91 |
| depends on OF || COMPILE_TEST |
| help |
| Many Atmel AT91 processors (such as the AT91RM2000) have a |
| full speed USB Device Port with support for five configurable |
| endpoints (plus endpoint zero). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "at91_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_LPC32XX |
| tristate "LPC32XX USB Peripheral Controller" |
| depends on ARCH_LPC32XX || COMPILE_TEST |
| depends on I2C |
| select USB_ISP1301 |
| help |
| This option selects the USB device controller in the LPC32xx SoC. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "lpc32xx_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_ATMEL_USBA |
| tristate "Atmel USBA" |
| depends on ARCH_AT91 |
| help |
| USBA is the integrated high-speed USB Device controller on |
| the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. |
| |
| The fifo_mode parameter is used to select endpoint allocation mode. |
| fifo_mode = 0 is used to let the driver autoconfigure the endpoints. |
| In this case, for ep1 2 banks are allocated if it works in isochronous |
| mode and only 1 bank otherwise. For the rest of the endpoints |
| only 1 bank is allocated. |
| |
| fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration |
| allowing the usage of ep1 - ep6 |
| |
| fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes) |
| configuration allowing the usage of ep1 - ep3 |
| |
| fifo_mode = 3 is a balanced performance configuration allowing the |
| the usage of ep1 - ep8 |
| |
| config USB_BCM63XX_UDC |
| tristate "Broadcom BCM63xx Peripheral Controller" |
| depends on BCM63XX |
| help |
| Many Broadcom BCM63xx chipsets (such as the BCM6328) have a |
| high speed USB Device Port with support for four fixed endpoints |
| (plus endpoint zero). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "bcm63xx_udc". |
| |
| config USB_FSL_USB2 |
| tristate "Freescale Highspeed USB DR Peripheral Controller" |
| depends on FSL_SOC |
| help |
| Some of Freescale PowerPC and i.MX processors have a High Speed |
| Dual-Role(DR) USB controller, which supports device mode. |
| |
| The number of programmable endpoints is different through |
| SOC revisions. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "fsl_usb2_udc" and force |
| all gadget drivers to also be dynamically linked. |
| |
| config USB_FUSB300 |
| tristate "Faraday FUSB300 USB Peripheral Controller" |
| depends on !PHYS_ADDR_T_64BIT && HAS_DMA |
| help |
| Faraday usb device controller FUSB300 driver |
| |
| config USB_FOTG210_UDC |
| depends on HAS_DMA |
| tristate "Faraday FOTG210 USB Peripheral Controller" |
| help |
| Faraday USB2.0 OTG controller which can be configured as |
| high speed or full speed USB device. This driver supppors |
| Bulk Transfer so far. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "fotg210_udc". |
| |
| config USB_GR_UDC |
| tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver" |
| depends on HAS_DMA |
| help |
| Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB |
| VHDL IP core library. |
| |
| config USB_OMAP |
| tristate "OMAP USB Device Controller" |
| depends on ARCH_OMAP1 |
| depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3) |
| help |
| Many Texas Instruments OMAP processors have flexible full |
| speed USB device controllers, with support for up to 30 |
| endpoints (plus endpoint zero). This driver supports the |
| controller in the OMAP 1611, and should work with controllers |
| in other OMAP processors too, given minor tweaks. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "omap_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_PXA25X |
| tristate "PXA 25x or IXP 4xx" |
| depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX |
| depends on HAS_IOMEM |
| help |
| Intel's PXA 25x series XScale ARM-5TE processors include |
| an integrated full speed USB 1.1 device controller. The |
| controller in the IXP 4xx series is register-compatible. |
| |
| It has fifteen fixed-function endpoints, as well as endpoint |
| zero (for control transfers). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "pxa25x_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| # if there's only one gadget driver, using only two bulk endpoints, |
| # don't waste memory for the other endpoints |
| config USB_PXA25X_SMALL |
| depends on USB_PXA25X |
| bool |
| default n if USB_ETH_RNDIS |
| default y if USB_ZERO |
| default y if USB_ETH |
| default y if USB_G_SERIAL |
| |
| config USB_R8A66597 |
| tristate "Renesas R8A66597 USB Peripheral Controller" |
| depends on HAS_DMA |
| help |
| R8A66597 is a discrete USB host and peripheral controller chip that |
| supports both full and high speed USB 2.0 data transfers. |
| It has nine configurable endpoints, and endpoint zero. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "r8a66597_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_RENESAS_USBHS_UDC |
| tristate 'Renesas USBHS controller' |
| depends on USB_RENESAS_USBHS |
| help |
| Renesas USBHS is a discrete USB host and peripheral controller chip |
| that supports both full and high speed USB 2.0 data transfers. |
| It has nine or more configurable endpoints, and endpoint zero. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "renesas_usbhs" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_RENESAS_USB3 |
| tristate 'Renesas USB3.0 Peripheral controller' |
| depends on ARCH_RENESAS || COMPILE_TEST |
| depends on EXTCON |
| select USB_ROLE_SWITCH |
| help |
| Renesas USB3.0 Peripheral controller is a USB peripheral controller |
| that supports super, high, and full speed USB 3.0 data transfers. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "renesas_usb3" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_PXA27X |
| tristate "PXA 27x" |
| depends on HAS_IOMEM |
| help |
| Intel's PXA 27x series XScale ARM v5TE processors include |
| an integrated full speed USB 1.1 device controller. |
| |
| It has up to 23 endpoints, as well as endpoint zero (for |
| control transfers). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "pxa27x_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_S3C2410 |
| tristate "S3C2410 USB Device Controller" |
| depends on ARCH_S3C24XX |
| help |
| Samsung's S3C2410 is an ARM-4 processor with an integrated |
| full speed USB 1.1 device controller. It has 4 configurable |
| endpoints, as well as endpoint zero (for control transfers). |
| |
| This driver has been tested on the S3C2410, S3C2412, and |
| S3C2440 processors. |
| |
| config USB_S3C2410_DEBUG |
| bool "S3C2410 udc debug messages" |
| depends on USB_S3C2410 |
| |
| config USB_S3C_HSUDC |
| tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller" |
| depends on ARCH_S3C24XX |
| help |
| Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC |
| integrated with dual speed USB 2.0 device controller. It has |
| 8 endpoints, as well as endpoint zero. |
| |
| This driver has been tested on S3C2416 and S3C2450 processors. |
| |
| config USB_MV_UDC |
| tristate "Marvell USB2.0 Device Controller" |
| depends on HAS_DMA |
| help |
| Marvell Socs (including PXA and MMP series) include a high speed |
| USB2.0 OTG controller, which can be configured as high speed or |
| full speed USB peripheral. |
| |
| config USB_MV_U3D |
| depends on HAS_DMA |
| tristate "MARVELL PXA2128 USB 3.0 controller" |
| help |
| MARVELL PXA2128 Processor series include a super speed USB3.0 device |
| controller, which support super speed USB peripheral. |
| |
| config USB_SNP_CORE |
| depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT) |
| depends on HAS_DMA |
| tristate |
| help |
| This enables core driver support for Synopsys USB 2.0 Device |
| controller. |
| |
| This will be enabled when PCI or Platform driver for this UDC is |
| selected. Currently, this will be enabled by USB_SNP_UDC_PLAT or |
| USB_AMD5536UDC options. |
| |
| This IP is different to the High Speed OTG IP that can be enabled |
| by selecting USB_DWC2 or USB_DWC3 options. |
| |
| config USB_SNP_UDC_PLAT |
| tristate "Synopsys USB 2.0 Device controller" |
| depends on USB_GADGET && OF && HAS_DMA |
| depends on EXTCON || EXTCON=n |
| select USB_SNP_CORE |
| default ARCH_BCM_IPROC |
| help |
| This adds Platform Device support for Synopsys Designware core |
| AHB subsystem USB2.0 Device Controller (UDC). |
| |
| This driver works with UDCs integrated into Broadcom's Northstar2 |
| and Cygnus SoCs. |
| |
| If unsure, say N. |
| # |
| # Controllers available in both integrated and discrete versions |
| # |
| |
| config USB_M66592 |
| tristate "Renesas M66592 USB Peripheral Controller" |
| depends on HAS_IOMEM |
| help |
| M66592 is a discrete USB peripheral controller chip that |
| supports both full and high speed USB 2.0 data transfers. |
| It has seven configurable endpoints, and endpoint zero. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "m66592_udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| source "drivers/usb/gadget/udc/bdc/Kconfig" |
| |
| # |
| # Controllers available only in discrete form (and all PCI controllers) |
| # |
| |
| config USB_AMD5536UDC |
| tristate "AMD5536 UDC" |
| depends on USB_PCI |
| select USB_SNP_CORE |
| help |
| The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. |
| It is a USB Highspeed DMA capable USB device controller. Beside ep0 |
| it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). |
| The UDC port supports OTG operation, and may be used as a host port |
| if it's not being used to implement peripheral or OTG roles. |
| |
| This UDC is based on Synopsys USB device controller IP and selects |
| CONFIG_USB_SNP_CORE option to build the core driver. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "amd5536udc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_FSL_QE |
| tristate "Freescale QE/CPM USB Device Controller" |
| depends on FSL_SOC && (QUICC_ENGINE || CPM) |
| help |
| Some of Freescale PowerPC processors have a Full Speed |
| QE/CPM2 USB controller, which support device mode with 4 |
| programmable endpoints. This driver supports the |
| controller in the MPC8360 and MPC8272, and should work with |
| controllers having QE or CPM2, given minor tweaks. |
| |
| Set CONFIG_USB_GADGET to "m" to build this driver as a |
| dynamically linked module called "fsl_qe_udc". |
| |
| config USB_NET2272 |
| depends on HAS_IOMEM |
| tristate "PLX NET2272" |
| help |
| PLX NET2272 is a USB peripheral controller which supports |
| both full and high speed USB 2.0 data transfers. |
| |
| It has three configurable endpoints, as well as endpoint zero |
| (for control transfer). |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "net2272" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_NET2272_DMA |
| bool "Support external DMA controller" |
| depends on USB_NET2272 && HAS_DMA |
| help |
| The NET2272 part can optionally support an external DMA |
| controller, but your board has to have support in the |
| driver itself. |
| |
| If unsure, say "N" here. The driver works fine in PIO mode. |
| |
| config USB_NET2280 |
| tristate "NetChip NET228x / PLX USB3x8x" |
| depends on USB_PCI |
| help |
| NetChip 2280 / 2282 is a PCI based USB peripheral controller which |
| supports both full and high speed USB 2.0 data transfers. |
| |
| It has six configurable endpoints, as well as endpoint zero |
| (for control transfers) and several endpoints with dedicated |
| functions. |
| |
| PLX 2380 is a PCIe version of the PLX 2380. |
| |
| PLX 3380 / 3382 is a PCIe based USB peripheral controller which |
| supports full, high speed USB 2.0 and super speed USB 3.0 |
| data transfers. |
| |
| It has eight configurable endpoints, as well as endpoint zero |
| (for control transfers) and several endpoints with dedicated |
| functions. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "net2280" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_GOKU |
| tristate "Toshiba TC86C001 'Goku-S'" |
| depends on USB_PCI |
| help |
| The Toshiba TC86C001 is a PCI device which includes controllers |
| for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). |
| |
| The device controller has three configurable (bulk or interrupt) |
| endpoints, plus endpoint zero (for control transfers). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "goku_udc" and to force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_EG20T |
| tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" |
| depends on USB_PCI |
| help |
| This is a USB device driver for EG20T PCH. |
| EG20T PCH is the platform controller hub that is used in Intel's |
| general embedded platform. EG20T PCH has USB device interface. |
| Using this interface, it is able to access system devices connected |
| to USB device. |
| This driver enables USB device function. |
| USB device is a USB peripheral controller which |
| supports both full and high speed USB 2.0 data transfers. |
| This driver supports both control transfer and bulk transfer modes. |
| This driver dose not support interrupt transfer or isochronous |
| transfer modes. |
| |
| This driver also can be used for LAPIS Semiconductor's ML7213 which is |
| for IVI(In-Vehicle Infotainment) use. |
| ML7831 is for general purpose use. |
| ML7213/ML7831 is companion chip for Intel Atom E6xx series. |
| ML7213/ML7831 is completely compatible for Intel EG20T PCH. |
| |
| This driver can be used with Intel's Quark X1000 SOC platform |
| |
| config USB_GADGET_XILINX |
| tristate "Xilinx USB Driver" |
| depends on HAS_DMA |
| depends on OF || COMPILE_TEST |
| help |
| USB peripheral controller driver for Xilinx USB2 device. |
| Xilinx USB2 device is a soft IP which supports both full |
| and high speed USB 2.0 data transfers. It has seven configurable |
| endpoints(bulk or interrupt or isochronous), as well as |
| endpoint zero(for control transfers). |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "udc-xilinx" and force all |
| gadget drivers to also be dynamically linked. |
| |
| config USB_MAX3420_UDC |
| tristate "MAX3420 (USB-over-SPI) support" |
| depends on SPI |
| help |
| The Maxim MAX3420 chip supports USB2.0 full-speed peripheral mode. |
| The MAX3420 is run by SPI interface, and hence the dependency. |
| |
| To compile this driver as a module, choose M here: the module will |
| be called max3420_udc |
| |
| config USB_TEGRA_XUDC |
| tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller" |
| depends on ARCH_TEGRA || COMPILE_TEST |
| depends on PHY_TEGRA_XUSB |
| help |
| Enables NVIDIA Tegra USB 3.0 device mode controller driver. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "tegra_xudc" and force all |
| gadget drivers to also be dynamically linked. |
| |
| source "drivers/usb/gadget/udc/aspeed-vhub/Kconfig" |
| |
| # |
| # LAST -- dummy/emulated controller |
| # |
| |
| config USB_DUMMY_HCD |
| tristate "Dummy HCD (DEVELOPMENT)" |
| depends on USB=y || (USB=m && USB_GADGET=m) |
| help |
| This host controller driver emulates USB, looping all data transfer |
| requests back to a USB "gadget driver" in the same host. The host |
| side is the controller; the gadget side is the device. Gadget drivers |
| can be high, full, or low speed; and they have access to endpoints |
| like those from NET2280, PXA2xx, or SA1100 hardware. |
| |
| This may help in some stages of creating a driver to embed in a |
| Linux device, since it lets you debug several parts of the gadget |
| driver without its hardware or drivers being involved. |
| |
| Since such a gadget side driver needs to interoperate with a host |
| side Linux-USB device driver, this may help to debug both sides |
| of a USB protocol stack. |
| |
| Say "y" to link the driver statically, or "m" to build a |
| dynamically linked module called "dummy_hcd" and force all |
| gadget drivers to also be dynamically linked. |
| |
| # NOTE: Please keep dummy_hcd LAST so that "real hardware" appears |
| # first and will be selected by default. |
| |
| endmenu |