18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# USB Gadget support on a system involves 48c2ecf20Sopenharmony_ci# (a) a peripheral controller, and 58c2ecf20Sopenharmony_ci# (b) the gadget driver using it. 68c2ecf20Sopenharmony_ci# 78c2ecf20Sopenharmony_ci# NOTE: Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! 88c2ecf20Sopenharmony_ci# 98c2ecf20Sopenharmony_ci# - Host systems (like PCs) need CONFIG_USB (with "A" jacks). 108c2ecf20Sopenharmony_ci# - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). 118c2ecf20Sopenharmony_ci# - Some systems have both kinds of controllers. 128c2ecf20Sopenharmony_ci# 138c2ecf20Sopenharmony_ci# With help from a special transceiver and a "Mini-AB" jack, systems with 148c2ecf20Sopenharmony_ci# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). 158c2ecf20Sopenharmony_ci# 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci# 188c2ecf20Sopenharmony_ci# USB Peripheral Controller Support 198c2ecf20Sopenharmony_ci# 208c2ecf20Sopenharmony_ci# The order here is alphabetical, except that integrated controllers go 218c2ecf20Sopenharmony_ci# before discrete ones so they will be the initial/default value: 228c2ecf20Sopenharmony_ci# - integrated/SOC controllers first 238c2ecf20Sopenharmony_ci# - licensed IP used in both SOC and discrete versions 248c2ecf20Sopenharmony_ci# - discrete ones (including all PCI-only controllers) 258c2ecf20Sopenharmony_ci# - debug/dummy gadget+hcd is last. 268c2ecf20Sopenharmony_ci# 278c2ecf20Sopenharmony_cimenu "USB Peripheral Controller" 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci# 308c2ecf20Sopenharmony_ci# Integrated controllers 318c2ecf20Sopenharmony_ci# 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciconfig USB_AT91 348c2ecf20Sopenharmony_ci tristate "Atmel AT91 USB Device Port" 358c2ecf20Sopenharmony_ci depends on ARCH_AT91 368c2ecf20Sopenharmony_ci depends on OF || COMPILE_TEST 378c2ecf20Sopenharmony_ci help 388c2ecf20Sopenharmony_ci Many Atmel AT91 processors (such as the AT91RM2000) have a 398c2ecf20Sopenharmony_ci full speed USB Device Port with support for five configurable 408c2ecf20Sopenharmony_ci endpoints (plus endpoint zero). 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 438c2ecf20Sopenharmony_ci dynamically linked module called "at91_udc" and force all 448c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ciconfig USB_LPC32XX 478c2ecf20Sopenharmony_ci tristate "LPC32XX USB Peripheral Controller" 488c2ecf20Sopenharmony_ci depends on ARCH_LPC32XX || COMPILE_TEST 498c2ecf20Sopenharmony_ci depends on I2C 508c2ecf20Sopenharmony_ci select USB_ISP1301 518c2ecf20Sopenharmony_ci help 528c2ecf20Sopenharmony_ci This option selects the USB device controller in the LPC32xx SoC. 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 558c2ecf20Sopenharmony_ci dynamically linked module called "lpc32xx_udc" and force all 568c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciconfig USB_ATMEL_USBA 598c2ecf20Sopenharmony_ci tristate "Atmel USBA" 608c2ecf20Sopenharmony_ci depends on ARCH_AT91 618c2ecf20Sopenharmony_ci help 628c2ecf20Sopenharmony_ci USBA is the integrated high-speed USB Device controller on 638c2ecf20Sopenharmony_ci the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci The fifo_mode parameter is used to select endpoint allocation mode. 668c2ecf20Sopenharmony_ci fifo_mode = 0 is used to let the driver autoconfigure the endpoints. 678c2ecf20Sopenharmony_ci In this case, for ep1 2 banks are allocated if it works in isochronous 688c2ecf20Sopenharmony_ci mode and only 1 bank otherwise. For the rest of the endpoints 698c2ecf20Sopenharmony_ci only 1 bank is allocated. 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration 728c2ecf20Sopenharmony_ci allowing the usage of ep1 - ep6 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes) 758c2ecf20Sopenharmony_ci configuration allowing the usage of ep1 - ep3 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci fifo_mode = 3 is a balanced performance configuration allowing the 788c2ecf20Sopenharmony_ci the usage of ep1 - ep8 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciconfig USB_BCM63XX_UDC 818c2ecf20Sopenharmony_ci tristate "Broadcom BCM63xx Peripheral Controller" 828c2ecf20Sopenharmony_ci depends on BCM63XX 838c2ecf20Sopenharmony_ci help 848c2ecf20Sopenharmony_ci Many Broadcom BCM63xx chipsets (such as the BCM6328) have a 858c2ecf20Sopenharmony_ci high speed USB Device Port with support for four fixed endpoints 868c2ecf20Sopenharmony_ci (plus endpoint zero). 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 898c2ecf20Sopenharmony_ci dynamically linked module called "bcm63xx_udc". 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciconfig USB_FSL_USB2 928c2ecf20Sopenharmony_ci tristate "Freescale Highspeed USB DR Peripheral Controller" 938c2ecf20Sopenharmony_ci depends on FSL_SOC || ARCH_MXC 948c2ecf20Sopenharmony_ci help 958c2ecf20Sopenharmony_ci Some of Freescale PowerPC and i.MX processors have a High Speed 968c2ecf20Sopenharmony_ci Dual-Role(DR) USB controller, which supports device mode. 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci The number of programmable endpoints is different through 998c2ecf20Sopenharmony_ci SOC revisions. 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1028c2ecf20Sopenharmony_ci dynamically linked module called "fsl_usb2_udc" and force 1038c2ecf20Sopenharmony_ci all gadget drivers to also be dynamically linked. 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ciconfig USB_FUSB300 1068c2ecf20Sopenharmony_ci tristate "Faraday FUSB300 USB Peripheral Controller" 1078c2ecf20Sopenharmony_ci depends on !PHYS_ADDR_T_64BIT && HAS_DMA 1088c2ecf20Sopenharmony_ci help 1098c2ecf20Sopenharmony_ci Faraday usb device controller FUSB300 driver 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ciconfig USB_FOTG210_UDC 1128c2ecf20Sopenharmony_ci depends on HAS_DMA 1138c2ecf20Sopenharmony_ci tristate "Faraday FOTG210 USB Peripheral Controller" 1148c2ecf20Sopenharmony_ci help 1158c2ecf20Sopenharmony_ci Faraday USB2.0 OTG controller which can be configured as 1168c2ecf20Sopenharmony_ci high speed or full speed USB device. This driver supppors 1178c2ecf20Sopenharmony_ci Bulk Transfer so far. 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1208c2ecf20Sopenharmony_ci dynamically linked module called "fotg210_udc". 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ciconfig USB_GR_UDC 1238c2ecf20Sopenharmony_ci tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver" 1248c2ecf20Sopenharmony_ci depends on HAS_DMA 1258c2ecf20Sopenharmony_ci help 1268c2ecf20Sopenharmony_ci Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB 1278c2ecf20Sopenharmony_ci VHDL IP core library. 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ciconfig USB_OMAP 1308c2ecf20Sopenharmony_ci tristate "OMAP USB Device Controller" 1318c2ecf20Sopenharmony_ci depends on ARCH_OMAP1 1328c2ecf20Sopenharmony_ci depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3) 1338c2ecf20Sopenharmony_ci help 1348c2ecf20Sopenharmony_ci Many Texas Instruments OMAP processors have flexible full 1358c2ecf20Sopenharmony_ci speed USB device controllers, with support for up to 30 1368c2ecf20Sopenharmony_ci endpoints (plus endpoint zero). This driver supports the 1378c2ecf20Sopenharmony_ci controller in the OMAP 1611, and should work with controllers 1388c2ecf20Sopenharmony_ci in other OMAP processors too, given minor tweaks. 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1418c2ecf20Sopenharmony_ci dynamically linked module called "omap_udc" and force all 1428c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ciconfig USB_PXA25X 1458c2ecf20Sopenharmony_ci tristate "PXA 25x or IXP 4xx" 1468c2ecf20Sopenharmony_ci depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 1478c2ecf20Sopenharmony_ci depends on HAS_IOMEM 1488c2ecf20Sopenharmony_ci help 1498c2ecf20Sopenharmony_ci Intel's PXA 25x series XScale ARM-5TE processors include 1508c2ecf20Sopenharmony_ci an integrated full speed USB 1.1 device controller. The 1518c2ecf20Sopenharmony_ci controller in the IXP 4xx series is register-compatible. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci It has fifteen fixed-function endpoints, as well as endpoint 1548c2ecf20Sopenharmony_ci zero (for control transfers). 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1578c2ecf20Sopenharmony_ci dynamically linked module called "pxa25x_udc" and force all 1588c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ci# if there's only one gadget driver, using only two bulk endpoints, 1618c2ecf20Sopenharmony_ci# don't waste memory for the other endpoints 1628c2ecf20Sopenharmony_ciconfig USB_PXA25X_SMALL 1638c2ecf20Sopenharmony_ci depends on USB_PXA25X 1648c2ecf20Sopenharmony_ci bool 1658c2ecf20Sopenharmony_ci default n if USB_ETH_RNDIS 1668c2ecf20Sopenharmony_ci default y if USB_ZERO 1678c2ecf20Sopenharmony_ci default y if USB_ETH 1688c2ecf20Sopenharmony_ci default y if USB_G_SERIAL 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ciconfig USB_R8A66597 1718c2ecf20Sopenharmony_ci tristate "Renesas R8A66597 USB Peripheral Controller" 1728c2ecf20Sopenharmony_ci depends on HAS_DMA 1738c2ecf20Sopenharmony_ci help 1748c2ecf20Sopenharmony_ci R8A66597 is a discrete USB host and peripheral controller chip that 1758c2ecf20Sopenharmony_ci supports both full and high speed USB 2.0 data transfers. 1768c2ecf20Sopenharmony_ci It has nine configurable endpoints, and endpoint zero. 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1798c2ecf20Sopenharmony_ci dynamically linked module called "r8a66597_udc" and force all 1808c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 1818c2ecf20Sopenharmony_ci 1828c2ecf20Sopenharmony_ciconfig USB_RENESAS_USBHS_UDC 1838c2ecf20Sopenharmony_ci tristate 'Renesas USBHS controller' 1848c2ecf20Sopenharmony_ci depends on USB_RENESAS_USBHS 1858c2ecf20Sopenharmony_ci help 1868c2ecf20Sopenharmony_ci Renesas USBHS is a discrete USB host and peripheral controller chip 1878c2ecf20Sopenharmony_ci that supports both full and high speed USB 2.0 data transfers. 1888c2ecf20Sopenharmony_ci It has nine or more configurable endpoints, and endpoint zero. 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 1918c2ecf20Sopenharmony_ci dynamically linked module called "renesas_usbhs" and force all 1928c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 1938c2ecf20Sopenharmony_ci 1948c2ecf20Sopenharmony_ciconfig USB_RENESAS_USB3 1958c2ecf20Sopenharmony_ci tristate 'Renesas USB3.0 Peripheral controller' 1968c2ecf20Sopenharmony_ci depends on ARCH_RENESAS || COMPILE_TEST 1978c2ecf20Sopenharmony_ci depends on EXTCON 1988c2ecf20Sopenharmony_ci select USB_ROLE_SWITCH 1998c2ecf20Sopenharmony_ci help 2008c2ecf20Sopenharmony_ci Renesas USB3.0 Peripheral controller is a USB peripheral controller 2018c2ecf20Sopenharmony_ci that supports super, high, and full speed USB 3.0 data transfers. 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 2048c2ecf20Sopenharmony_ci dynamically linked module called "renesas_usb3" and force all 2058c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ciconfig USB_PXA27X 2088c2ecf20Sopenharmony_ci tristate "PXA 27x" 2098c2ecf20Sopenharmony_ci depends on HAS_IOMEM 2108c2ecf20Sopenharmony_ci help 2118c2ecf20Sopenharmony_ci Intel's PXA 27x series XScale ARM v5TE processors include 2128c2ecf20Sopenharmony_ci an integrated full speed USB 1.1 device controller. 2138c2ecf20Sopenharmony_ci 2148c2ecf20Sopenharmony_ci It has up to 23 endpoints, as well as endpoint zero (for 2158c2ecf20Sopenharmony_ci control transfers). 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 2188c2ecf20Sopenharmony_ci dynamically linked module called "pxa27x_udc" and force all 2198c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 2208c2ecf20Sopenharmony_ci 2218c2ecf20Sopenharmony_ciconfig USB_S3C2410 2228c2ecf20Sopenharmony_ci tristate "S3C2410 USB Device Controller" 2238c2ecf20Sopenharmony_ci depends on ARCH_S3C24XX 2248c2ecf20Sopenharmony_ci help 2258c2ecf20Sopenharmony_ci Samsung's S3C2410 is an ARM-4 processor with an integrated 2268c2ecf20Sopenharmony_ci full speed USB 1.1 device controller. It has 4 configurable 2278c2ecf20Sopenharmony_ci endpoints, as well as endpoint zero (for control transfers). 2288c2ecf20Sopenharmony_ci 2298c2ecf20Sopenharmony_ci This driver has been tested on the S3C2410, S3C2412, and 2308c2ecf20Sopenharmony_ci S3C2440 processors. 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ciconfig USB_S3C2410_DEBUG 2338c2ecf20Sopenharmony_ci bool "S3C2410 udc debug messages" 2348c2ecf20Sopenharmony_ci depends on USB_S3C2410 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ciconfig USB_S3C_HSUDC 2378c2ecf20Sopenharmony_ci tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller" 2388c2ecf20Sopenharmony_ci depends on ARCH_S3C24XX 2398c2ecf20Sopenharmony_ci help 2408c2ecf20Sopenharmony_ci Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC 2418c2ecf20Sopenharmony_ci integrated with dual speed USB 2.0 device controller. It has 2428c2ecf20Sopenharmony_ci 8 endpoints, as well as endpoint zero. 2438c2ecf20Sopenharmony_ci 2448c2ecf20Sopenharmony_ci This driver has been tested on S3C2416 and S3C2450 processors. 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ciconfig USB_MV_UDC 2478c2ecf20Sopenharmony_ci tristate "Marvell USB2.0 Device Controller" 2488c2ecf20Sopenharmony_ci depends on HAS_DMA 2498c2ecf20Sopenharmony_ci help 2508c2ecf20Sopenharmony_ci Marvell Socs (including PXA and MMP series) include a high speed 2518c2ecf20Sopenharmony_ci USB2.0 OTG controller, which can be configured as high speed or 2528c2ecf20Sopenharmony_ci full speed USB peripheral. 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_ciconfig USB_MV_U3D 2558c2ecf20Sopenharmony_ci depends on HAS_DMA 2568c2ecf20Sopenharmony_ci tristate "MARVELL PXA2128 USB 3.0 controller" 2578c2ecf20Sopenharmony_ci help 2588c2ecf20Sopenharmony_ci MARVELL PXA2128 Processor series include a super speed USB3.0 device 2598c2ecf20Sopenharmony_ci controller, which support super speed USB peripheral. 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ciconfig USB_SNP_CORE 2628c2ecf20Sopenharmony_ci depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT) 2638c2ecf20Sopenharmony_ci depends on HAS_DMA 2648c2ecf20Sopenharmony_ci tristate 2658c2ecf20Sopenharmony_ci help 2668c2ecf20Sopenharmony_ci This enables core driver support for Synopsys USB 2.0 Device 2678c2ecf20Sopenharmony_ci controller. 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_ci This will be enabled when PCI or Platform driver for this UDC is 2708c2ecf20Sopenharmony_ci selected. Currently, this will be enabled by USB_SNP_UDC_PLAT or 2718c2ecf20Sopenharmony_ci USB_AMD5536UDC options. 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci This IP is different to the High Speed OTG IP that can be enabled 2748c2ecf20Sopenharmony_ci by selecting USB_DWC2 or USB_DWC3 options. 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ciconfig USB_SNP_UDC_PLAT 2778c2ecf20Sopenharmony_ci tristate "Synopsys USB 2.0 Device controller" 2788c2ecf20Sopenharmony_ci depends on USB_GADGET && OF && HAS_DMA 2798c2ecf20Sopenharmony_ci depends on EXTCON || EXTCON=n 2808c2ecf20Sopenharmony_ci select USB_SNP_CORE 2818c2ecf20Sopenharmony_ci default ARCH_BCM_IPROC 2828c2ecf20Sopenharmony_ci help 2838c2ecf20Sopenharmony_ci This adds Platform Device support for Synopsys Designware core 2848c2ecf20Sopenharmony_ci AHB subsystem USB2.0 Device Controller (UDC). 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci This driver works with UDCs integrated into Broadcom's Northstar2 2878c2ecf20Sopenharmony_ci and Cygnus SoCs. 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ci If unsure, say N. 2908c2ecf20Sopenharmony_ci# 2918c2ecf20Sopenharmony_ci# Controllers available in both integrated and discrete versions 2928c2ecf20Sopenharmony_ci# 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_ciconfig USB_M66592 2958c2ecf20Sopenharmony_ci tristate "Renesas M66592 USB Peripheral Controller" 2968c2ecf20Sopenharmony_ci depends on HAS_IOMEM 2978c2ecf20Sopenharmony_ci help 2988c2ecf20Sopenharmony_ci M66592 is a discrete USB peripheral controller chip that 2998c2ecf20Sopenharmony_ci supports both full and high speed USB 2.0 data transfers. 3008c2ecf20Sopenharmony_ci It has seven configurable endpoints, and endpoint zero. 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 3038c2ecf20Sopenharmony_ci dynamically linked module called "m66592_udc" and force all 3048c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_cisource "drivers/usb/gadget/udc/bdc/Kconfig" 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci# 3098c2ecf20Sopenharmony_ci# Controllers available only in discrete form (and all PCI controllers) 3108c2ecf20Sopenharmony_ci# 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ciconfig USB_AMD5536UDC 3138c2ecf20Sopenharmony_ci tristate "AMD5536 UDC" 3148c2ecf20Sopenharmony_ci depends on USB_PCI && HAS_DMA 3158c2ecf20Sopenharmony_ci select USB_SNP_CORE 3168c2ecf20Sopenharmony_ci help 3178c2ecf20Sopenharmony_ci The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 3188c2ecf20Sopenharmony_ci It is a USB Highspeed DMA capable USB device controller. Beside ep0 3198c2ecf20Sopenharmony_ci it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 3208c2ecf20Sopenharmony_ci The UDC port supports OTG operation, and may be used as a host port 3218c2ecf20Sopenharmony_ci if it's not being used to implement peripheral or OTG roles. 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ci This UDC is based on Synopsys USB device controller IP and selects 3248c2ecf20Sopenharmony_ci CONFIG_USB_SNP_CORE option to build the core driver. 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 3278c2ecf20Sopenharmony_ci dynamically linked module called "amd5536udc" and force all 3288c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ciconfig USB_FSL_QE 3318c2ecf20Sopenharmony_ci tristate "Freescale QE/CPM USB Device Controller" 3328c2ecf20Sopenharmony_ci depends on FSL_SOC && (QUICC_ENGINE || CPM) 3338c2ecf20Sopenharmony_ci depends on !64BIT || BROKEN 3348c2ecf20Sopenharmony_ci help 3358c2ecf20Sopenharmony_ci Some of Freescale PowerPC processors have a Full Speed 3368c2ecf20Sopenharmony_ci QE/CPM2 USB controller, which support device mode with 4 3378c2ecf20Sopenharmony_ci programmable endpoints. This driver supports the 3388c2ecf20Sopenharmony_ci controller in the MPC8360 and MPC8272, and should work with 3398c2ecf20Sopenharmony_ci controllers having QE or CPM2, given minor tweaks. 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci Set CONFIG_USB_GADGET to "m" to build this driver as a 3428c2ecf20Sopenharmony_ci dynamically linked module called "fsl_qe_udc". 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_ciconfig USB_NET2272 3458c2ecf20Sopenharmony_ci depends on HAS_IOMEM 3468c2ecf20Sopenharmony_ci tristate "PLX NET2272" 3478c2ecf20Sopenharmony_ci help 3488c2ecf20Sopenharmony_ci PLX NET2272 is a USB peripheral controller which supports 3498c2ecf20Sopenharmony_ci both full and high speed USB 2.0 data transfers. 3508c2ecf20Sopenharmony_ci 3518c2ecf20Sopenharmony_ci It has three configurable endpoints, as well as endpoint zero 3528c2ecf20Sopenharmony_ci (for control transfer). 3538c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 3548c2ecf20Sopenharmony_ci dynamically linked module called "net2272" and force all 3558c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_ciconfig USB_NET2272_DMA 3588c2ecf20Sopenharmony_ci bool "Support external DMA controller" 3598c2ecf20Sopenharmony_ci depends on USB_NET2272 && HAS_DMA 3608c2ecf20Sopenharmony_ci help 3618c2ecf20Sopenharmony_ci The NET2272 part can optionally support an external DMA 3628c2ecf20Sopenharmony_ci controller, but your board has to have support in the 3638c2ecf20Sopenharmony_ci driver itself. 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_ci If unsure, say "N" here. The driver works fine in PIO mode. 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_ciconfig USB_NET2280 3688c2ecf20Sopenharmony_ci tristate "NetChip NET228x / PLX USB3x8x" 3698c2ecf20Sopenharmony_ci depends on USB_PCI 3708c2ecf20Sopenharmony_ci help 3718c2ecf20Sopenharmony_ci NetChip 2280 / 2282 is a PCI based USB peripheral controller which 3728c2ecf20Sopenharmony_ci supports both full and high speed USB 2.0 data transfers. 3738c2ecf20Sopenharmony_ci 3748c2ecf20Sopenharmony_ci It has six configurable endpoints, as well as endpoint zero 3758c2ecf20Sopenharmony_ci (for control transfers) and several endpoints with dedicated 3768c2ecf20Sopenharmony_ci functions. 3778c2ecf20Sopenharmony_ci 3788c2ecf20Sopenharmony_ci PLX 2380 is a PCIe version of the PLX 2380. 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_ci PLX 3380 / 3382 is a PCIe based USB peripheral controller which 3818c2ecf20Sopenharmony_ci supports full, high speed USB 2.0 and super speed USB 3.0 3828c2ecf20Sopenharmony_ci data transfers. 3838c2ecf20Sopenharmony_ci 3848c2ecf20Sopenharmony_ci It has eight configurable endpoints, as well as endpoint zero 3858c2ecf20Sopenharmony_ci (for control transfers) and several endpoints with dedicated 3868c2ecf20Sopenharmony_ci functions. 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 3898c2ecf20Sopenharmony_ci dynamically linked module called "net2280" and force all 3908c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 3918c2ecf20Sopenharmony_ci 3928c2ecf20Sopenharmony_ciconfig USB_GOKU 3938c2ecf20Sopenharmony_ci tristate "Toshiba TC86C001 'Goku-S'" 3948c2ecf20Sopenharmony_ci depends on USB_PCI 3958c2ecf20Sopenharmony_ci help 3968c2ecf20Sopenharmony_ci The Toshiba TC86C001 is a PCI device which includes controllers 3978c2ecf20Sopenharmony_ci for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_ci The device controller has three configurable (bulk or interrupt) 4008c2ecf20Sopenharmony_ci endpoints, plus endpoint zero (for control transfers). 4018c2ecf20Sopenharmony_ci 4028c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 4038c2ecf20Sopenharmony_ci dynamically linked module called "goku_udc" and to force all 4048c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 4058c2ecf20Sopenharmony_ci 4068c2ecf20Sopenharmony_ciconfig USB_EG20T 4078c2ecf20Sopenharmony_ci tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" 4088c2ecf20Sopenharmony_ci depends on USB_PCI 4098c2ecf20Sopenharmony_ci help 4108c2ecf20Sopenharmony_ci This is a USB device driver for EG20T PCH. 4118c2ecf20Sopenharmony_ci EG20T PCH is the platform controller hub that is used in Intel's 4128c2ecf20Sopenharmony_ci general embedded platform. EG20T PCH has USB device interface. 4138c2ecf20Sopenharmony_ci Using this interface, it is able to access system devices connected 4148c2ecf20Sopenharmony_ci to USB device. 4158c2ecf20Sopenharmony_ci This driver enables USB device function. 4168c2ecf20Sopenharmony_ci USB device is a USB peripheral controller which 4178c2ecf20Sopenharmony_ci supports both full and high speed USB 2.0 data transfers. 4188c2ecf20Sopenharmony_ci This driver supports both control transfer and bulk transfer modes. 4198c2ecf20Sopenharmony_ci This driver dose not support interrupt transfer or isochronous 4208c2ecf20Sopenharmony_ci transfer modes. 4218c2ecf20Sopenharmony_ci 4228c2ecf20Sopenharmony_ci This driver also can be used for LAPIS Semiconductor's ML7213 which is 4238c2ecf20Sopenharmony_ci for IVI(In-Vehicle Infotainment) use. 4248c2ecf20Sopenharmony_ci ML7831 is for general purpose use. 4258c2ecf20Sopenharmony_ci ML7213/ML7831 is companion chip for Intel Atom E6xx series. 4268c2ecf20Sopenharmony_ci ML7213/ML7831 is completely compatible for Intel EG20T PCH. 4278c2ecf20Sopenharmony_ci 4288c2ecf20Sopenharmony_ci This driver can be used with Intel's Quark X1000 SOC platform 4298c2ecf20Sopenharmony_ci 4308c2ecf20Sopenharmony_ciconfig USB_GADGET_XILINX 4318c2ecf20Sopenharmony_ci tristate "Xilinx USB Driver" 4328c2ecf20Sopenharmony_ci depends on HAS_DMA 4338c2ecf20Sopenharmony_ci depends on OF || COMPILE_TEST 4348c2ecf20Sopenharmony_ci help 4358c2ecf20Sopenharmony_ci USB peripheral controller driver for Xilinx USB2 device. 4368c2ecf20Sopenharmony_ci Xilinx USB2 device is a soft IP which supports both full 4378c2ecf20Sopenharmony_ci and high speed USB 2.0 data transfers. It has seven configurable 4388c2ecf20Sopenharmony_ci endpoints(bulk or interrupt or isochronous), as well as 4398c2ecf20Sopenharmony_ci endpoint zero(for control transfers). 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 4428c2ecf20Sopenharmony_ci dynamically linked module called "udc-xilinx" and force all 4438c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ciconfig USB_MAX3420_UDC 4468c2ecf20Sopenharmony_ci tristate "MAX3420 (USB-over-SPI) support" 4478c2ecf20Sopenharmony_ci depends on SPI 4488c2ecf20Sopenharmony_ci help 4498c2ecf20Sopenharmony_ci The Maxim MAX3420 chip supports USB2.0 full-speed peripheral mode. 4508c2ecf20Sopenharmony_ci The MAX3420 is run by SPI interface, and hence the dependency. 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here: the module will 4538c2ecf20Sopenharmony_ci be called max3420_udc 4548c2ecf20Sopenharmony_ci 4558c2ecf20Sopenharmony_ciconfig USB_TEGRA_XUDC 4568c2ecf20Sopenharmony_ci tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller" 4578c2ecf20Sopenharmony_ci depends on ARCH_TEGRA || COMPILE_TEST 4588c2ecf20Sopenharmony_ci depends on PHY_TEGRA_XUSB 4598c2ecf20Sopenharmony_ci help 4608c2ecf20Sopenharmony_ci Enables NVIDIA Tegra USB 3.0 device mode controller driver. 4618c2ecf20Sopenharmony_ci 4628c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 4638c2ecf20Sopenharmony_ci dynamically linked module called "tegra_xudc" and force all 4648c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 4658c2ecf20Sopenharmony_ci 4668c2ecf20Sopenharmony_cisource "drivers/usb/gadget/udc/aspeed-vhub/Kconfig" 4678c2ecf20Sopenharmony_ci 4688c2ecf20Sopenharmony_ci# 4698c2ecf20Sopenharmony_ci# LAST -- dummy/emulated controller 4708c2ecf20Sopenharmony_ci# 4718c2ecf20Sopenharmony_ci 4728c2ecf20Sopenharmony_ciconfig USB_DUMMY_HCD 4738c2ecf20Sopenharmony_ci tristate "Dummy HCD (DEVELOPMENT)" 4748c2ecf20Sopenharmony_ci depends on USB=y || (USB=m && USB_GADGET=m) 4758c2ecf20Sopenharmony_ci help 4768c2ecf20Sopenharmony_ci This host controller driver emulates USB, looping all data transfer 4778c2ecf20Sopenharmony_ci requests back to a USB "gadget driver" in the same host. The host 4788c2ecf20Sopenharmony_ci side is the controller; the gadget side is the device. Gadget drivers 4798c2ecf20Sopenharmony_ci can be high, full, or low speed; and they have access to endpoints 4808c2ecf20Sopenharmony_ci like those from NET2280, PXA2xx, or SA1100 hardware. 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_ci This may help in some stages of creating a driver to embed in a 4838c2ecf20Sopenharmony_ci Linux device, since it lets you debug several parts of the gadget 4848c2ecf20Sopenharmony_ci driver without its hardware or drivers being involved. 4858c2ecf20Sopenharmony_ci 4868c2ecf20Sopenharmony_ci Since such a gadget side driver needs to interoperate with a host 4878c2ecf20Sopenharmony_ci side Linux-USB device driver, this may help to debug both sides 4888c2ecf20Sopenharmony_ci of a USB protocol stack. 4898c2ecf20Sopenharmony_ci 4908c2ecf20Sopenharmony_ci Say "y" to link the driver statically, or "m" to build a 4918c2ecf20Sopenharmony_ci dynamically linked module called "dummy_hcd" and force all 4928c2ecf20Sopenharmony_ci gadget drivers to also be dynamically linked. 4938c2ecf20Sopenharmony_ci 4948c2ecf20Sopenharmony_ci# NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 4958c2ecf20Sopenharmony_ci# first and will be selected by default. 4968c2ecf20Sopenharmony_ci 4978c2ecf20Sopenharmony_ciendmenu 498