mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
496 lines
17 KiB
496 lines
17 KiB
# 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
|
|
|