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