linux/drivers/usb/gadget/Kconfig
<<
>>
Prefs
   1#
   2# USB Gadget support on a system involves
   3#    (a) a peripheral controller, and
   4#    (b) the gadget driver using it.
   5#
   6# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
   7#
   8#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
   9#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
  10#  - Some systems have both kinds of controllers.
  11#
  12# With help from a special transceiver and a "Mini-AB" jack, systems with
  13# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
  14#
  15
  16menuconfig USB_GADGET
  17        tristate "USB Gadget Support"
  18        select NLS
  19        help
  20           USB is a master/slave protocol, organized with one master
  21           host (such as a PC) controlling up to 127 peripheral devices.
  22           The USB hardware is asymmetric, which makes it easier to set up:
  23           you can't connect a "to-the-host" connector to a peripheral.
  24
  25           Linux can run in the host, or in the peripheral.  In both cases
  26           you need a low level bus controller driver, and some software
  27           talking to it.  Peripheral controllers are often discrete silicon,
  28           or are integrated with the CPU in a microcontroller.  The more
  29           familiar host side controllers have names like "EHCI", "OHCI",
  30           or "UHCI", and are usually integrated into southbridges on PC
  31           motherboards.
  32
  33           Enable this configuration option if you want to run Linux inside
  34           a USB peripheral device.  Configure one hardware driver for your
  35           peripheral/device side bus controller, and a "gadget driver" for
  36           your peripheral protocol.  (If you use modular gadget drivers,
  37           you may configure more than one.)
  38
  39           If in doubt, say "N" and don't enable these drivers; most people
  40           don't have this kind of hardware (except maybe inside Linux PDAs).
  41
  42           For more information, see <http://www.linux-usb.org/gadget> and
  43           the kernel DocBook documentation for this API.
  44
  45if USB_GADGET
  46
  47config USB_GADGET_DEBUG
  48        boolean "Debugging messages (DEVELOPMENT)"
  49        depends on DEBUG_KERNEL
  50        help
  51           Many controller and gadget drivers will print some debugging
  52           messages if you use this option to ask for those messages.
  53
  54           Avoid enabling these messages, even if you're actively
  55           debugging such a driver.  Many drivers will emit so many
  56           messages that the driver timings are affected, which will
  57           either create new failure modes or remove the one you're
  58           trying to track down.  Never enable these messages for a
  59           production build.
  60
  61config USB_GADGET_DEBUG_FILES
  62        boolean "Debugging information files (DEVELOPMENT)"
  63        depends on PROC_FS
  64        help
  65           Some of the drivers in the "gadget" framework can expose
  66           debugging information in files such as /proc/driver/udc
  67           (for a peripheral controller).  The information in these
  68           files may help when you're troubleshooting or bringing up a
  69           driver on a new board.   Enable these files by choosing "Y"
  70           here.  If in doubt, or to conserve kernel memory, say "N".
  71
  72config USB_GADGET_DEBUG_FS
  73        boolean "Debugging information files in debugfs (DEVELOPMENT)"
  74        depends on DEBUG_FS
  75        help
  76           Some of the drivers in the "gadget" framework can expose
  77           debugging information in files under /sys/kernel/debug/.
  78           The information in these files may help when you're
  79           troubleshooting or bringing up a driver on a new board.
  80           Enable these files by choosing "Y" here.  If in doubt, or
  81           to conserve kernel memory, say "N".
  82
  83config USB_GADGET_VBUS_DRAW
  84        int "Maximum VBUS Power usage (2-500 mA)"
  85        range 2 500
  86        default 2
  87        help
  88           Some devices need to draw power from USB when they are
  89           configured, perhaps to operate circuitry or to recharge
  90           batteries.  This is in addition to any local power supply,
  91           such as an AC adapter or batteries.
  92
  93           Enter the maximum power your device draws through USB, in
  94           milliAmperes.  The permitted range of values is 2 - 500 mA;
  95           0 mA would be legal, but can make some hosts misbehave.
  96
  97           This value will be used except for system-specific gadget
  98           drivers that have more specific information.
  99
 100config USB_GADGET_STORAGE_NUM_BUFFERS
 101        int "Number of storage pipeline buffers"
 102        range 2 4
 103        default 2
 104        help
 105           Usually 2 buffers are enough to establish a good buffering
 106           pipeline. The number may be increased in order to compensate
 107           for a bursty VFS behaviour. For instance there may be CPU wake up
 108           latencies that makes the VFS to appear bursty in a system with
 109           an CPU on-demand governor. Especially if DMA is doing IO to
 110           offload the CPU. In this case the CPU will go into power
 111           save often and spin up occasionally to move data within VFS.
 112           If selecting USB_GADGET_DEBUG_FILES this value may be set by
 113           a module parameter as well.
 114           If unsure, say 2.
 115
 116#
 117# USB Peripheral Controller Support
 118#
 119# The order here is alphabetical, except that integrated controllers go
 120# before discrete ones so they will be the initial/default value:
 121#   - integrated/SOC controllers first
 122#   - licensed IP used in both SOC and discrete versions
 123#   - discrete ones (including all PCI-only controllers)
 124#   - debug/dummy gadget+hcd is last.
 125#
 126choice
 127        prompt "USB Peripheral Controller"
 128        help
 129           A USB device uses a controller to talk to its host.
 130           Systems should have only one such upstream link.
 131           Many controller drivers are platform-specific; these
 132           often need board-specific hooks.
 133
 134#
 135# Integrated controllers
 136#
 137
 138config USB_AT91
 139        tristate "Atmel AT91 USB Device Port"
 140        depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45
 141        help
 142           Many Atmel AT91 processors (such as the AT91RM2000) have a
 143           full speed USB Device Port with support for five configurable
 144           endpoints (plus endpoint zero).
 145
 146           Say "y" to link the driver statically, or "m" to build a
 147           dynamically linked module called "at91_udc" and force all
 148           gadget drivers to also be dynamically linked.
 149
 150config USB_ATMEL_USBA
 151        tristate "Atmel USBA"
 152        select USB_GADGET_DUALSPEED
 153        depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
 154        help
 155          USBA is the integrated high-speed USB Device controller on
 156          the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
 157
 158config USB_FSL_USB2
 159        tristate "Freescale Highspeed USB DR Peripheral Controller"
 160        depends on FSL_SOC || ARCH_MXC
 161        select USB_GADGET_DUALSPEED
 162        select USB_FSL_MPH_DR_OF if OF
 163        help
 164           Some of Freescale PowerPC processors have a High Speed
 165           Dual-Role(DR) USB controller, which supports device mode.
 166
 167           The number of programmable endpoints is different through
 168           SOC revisions.
 169
 170           Say "y" to link the driver statically, or "m" to build a
 171           dynamically linked module called "fsl_usb2_udc" and force
 172           all gadget drivers to also be dynamically linked.
 173
 174config USB_FUSB300
 175        tristate "Faraday FUSB300 USB Peripheral Controller"
 176        depends on !PHYS_ADDR_T_64BIT
 177        select USB_GADGET_DUALSPEED
 178        help
 179           Faraday usb device controller FUSB300 driver
 180
 181config USB_OMAP
 182        tristate "OMAP USB Device Controller"
 183        depends on ARCH_OMAP
 184        select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG
 185        select USB_OTG_UTILS if ARCH_OMAP
 186        help
 187           Many Texas Instruments OMAP processors have flexible full
 188           speed USB device controllers, with support for up to 30
 189           endpoints (plus endpoint zero).  This driver supports the
 190           controller in the OMAP 1611, and should work with controllers
 191           in other OMAP processors too, given minor tweaks.
 192
 193           Say "y" to link the driver statically, or "m" to build a
 194           dynamically linked module called "omap_udc" and force all
 195           gadget drivers to also be dynamically linked.
 196
 197config USB_PXA25X
 198        tristate "PXA 25x or IXP 4xx"
 199        depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
 200        select USB_OTG_UTILS
 201        help
 202           Intel's PXA 25x series XScale ARM-5TE processors include
 203           an integrated full speed USB 1.1 device controller.  The
 204           controller in the IXP 4xx series is register-compatible.
 205
 206           It has fifteen fixed-function endpoints, as well as endpoint
 207           zero (for control transfers).
 208
 209           Say "y" to link the driver statically, or "m" to build a
 210           dynamically linked module called "pxa25x_udc" and force all
 211           gadget drivers to also be dynamically linked.
 212
 213# if there's only one gadget driver, using only two bulk endpoints,
 214# don't waste memory for the other endpoints
 215config USB_PXA25X_SMALL
 216        depends on USB_PXA25X
 217        bool
 218        default n if USB_ETH_RNDIS
 219        default y if USB_ZERO
 220        default y if USB_ETH
 221        default y if USB_G_SERIAL
 222
 223config USB_R8A66597
 224        tristate "Renesas R8A66597 USB Peripheral Controller"
 225        select USB_GADGET_DUALSPEED
 226        help
 227           R8A66597 is a discrete USB host and peripheral controller chip that
 228           supports both full and high speed USB 2.0 data transfers.
 229           It has nine configurable endpoints, and endpoint zero.
 230
 231           Say "y" to link the driver statically, or "m" to build a
 232           dynamically linked module called "r8a66597_udc" and force all
 233           gadget drivers to also be dynamically linked.
 234
 235config USB_RENESAS_USBHS_UDC
 236        tristate 'Renesas USBHS controller'
 237        depends on USB_RENESAS_USBHS
 238        select USB_GADGET_DUALSPEED
 239        help
 240           Renesas USBHS is a discrete USB host and peripheral controller chip
 241           that supports both full and high speed USB 2.0 data transfers.
 242           It has nine or more configurable endpoints, and endpoint zero.
 243
 244           Say "y" to link the driver statically, or "m" to build a
 245           dynamically linked module called "renesas_usbhs" and force all
 246           gadget drivers to also be dynamically linked.
 247
 248config USB_PXA27X
 249        tristate "PXA 27x"
 250        depends on ARCH_PXA && (PXA27x || PXA3xx)
 251        select USB_OTG_UTILS
 252        help
 253           Intel's PXA 27x series XScale ARM v5TE processors include
 254           an integrated full speed USB 1.1 device controller.
 255
 256           It has up to 23 endpoints, as well as endpoint zero (for
 257           control transfers).
 258
 259           Say "y" to link the driver statically, or "m" to build a
 260           dynamically linked module called "pxa27x_udc" and force all
 261           gadget drivers to also be dynamically linked.
 262
 263config USB_S3C_HSOTG
 264        tristate "S3C HS/OtG USB Device controller"
 265        depends on S3C_DEV_USB_HSOTG
 266        select USB_GADGET_DUALSPEED
 267        help
 268          The Samsung S3C64XX USB2.0 high-speed gadget controller
 269          integrated into the S3C64XX series SoC.
 270
 271config USB_IMX
 272        tristate "Freescale i.MX1 USB Peripheral Controller"
 273        depends on ARCH_MXC
 274        help
 275           Freescale's i.MX1 includes an integrated full speed
 276           USB 1.1 device controller.
 277
 278           It has Six fixed-function endpoints, as well as endpoint
 279           zero (for control transfers).
 280
 281           Say "y" to link the driver statically, or "m" to build a
 282           dynamically linked module called "imx_udc" and force all
 283           gadget drivers to also be dynamically linked.
 284
 285config USB_S3C2410
 286        tristate "S3C2410 USB Device Controller"
 287        depends on ARCH_S3C2410
 288        help
 289          Samsung's S3C2410 is an ARM-4 processor with an integrated
 290          full speed USB 1.1 device controller.  It has 4 configurable
 291          endpoints, as well as endpoint zero (for control transfers).
 292
 293          This driver has been tested on the S3C2410, S3C2412, and
 294          S3C2440 processors.
 295
 296config USB_S3C2410_DEBUG
 297        boolean "S3C2410 udc debug messages"
 298        depends on USB_S3C2410
 299
 300config USB_S3C_HSUDC
 301        tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
 302        depends on ARCH_S3C2410
 303        select USB_GADGET_DUALSPEED
 304        help
 305          Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
 306          integrated with dual speed USB 2.0 device controller. It has
 307          8 endpoints, as well as endpoint zero.
 308
 309          This driver has been tested on S3C2416 and S3C2450 processors.
 310
 311config USB_MV_UDC
 312        tristate "Marvell USB2.0 Device Controller"
 313        select USB_GADGET_DUALSPEED
 314        help
 315          Marvell Socs (including PXA and MMP series) include a high speed
 316          USB2.0 OTG controller, which can be configured as high speed or
 317          full speed USB peripheral.
 318
 319#
 320# Controllers available in both integrated and discrete versions
 321#
 322
 323# musb builds in ../musb along with host support
 324config USB_GADGET_MUSB_HDRC
 325        tristate "Inventra HDRC USB Peripheral (TI, ADI, ...)"
 326        depends on USB_MUSB_HDRC
 327        select USB_GADGET_DUALSPEED
 328        help
 329          This OTG-capable silicon IP is used in dual designs including
 330          the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin
 331
 332config USB_M66592
 333        tristate "Renesas M66592 USB Peripheral Controller"
 334        select USB_GADGET_DUALSPEED
 335        help
 336           M66592 is a discrete USB peripheral controller chip that
 337           supports both full and high speed USB 2.0 data transfers.
 338           It has seven configurable endpoints, and endpoint zero.
 339
 340           Say "y" to link the driver statically, or "m" to build a
 341           dynamically linked module called "m66592_udc" and force all
 342           gadget drivers to also be dynamically linked.
 343
 344#
 345# Controllers available only in discrete form (and all PCI controllers)
 346#
 347
 348config USB_AMD5536UDC
 349        tristate "AMD5536 UDC"
 350        depends on PCI
 351        select USB_GADGET_DUALSPEED
 352        help
 353           The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
 354           It is a USB Highspeed DMA capable USB device controller. Beside ep0
 355           it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
 356           The UDC port supports OTG operation, and may be used as a host port
 357           if it's not being used to implement peripheral or OTG roles.
 358
 359           Say "y" to link the driver statically, or "m" to build a
 360           dynamically linked module called "amd5536udc" and force all
 361           gadget drivers to also be dynamically linked.
 362
 363config USB_FSL_QE
 364        tristate "Freescale QE/CPM USB Device Controller"
 365        depends on FSL_SOC && (QUICC_ENGINE || CPM)
 366        help
 367           Some of Freescale PowerPC processors have a Full Speed
 368           QE/CPM2 USB controller, which support device mode with 4
 369           programmable endpoints. This driver supports the
 370           controller in the MPC8360 and MPC8272, and should work with
 371           controllers having QE or CPM2, given minor tweaks.
 372
 373           Set CONFIG_USB_GADGET to "m" to build this driver as a
 374           dynamically linked module called "fsl_qe_udc".
 375
 376config USB_CI13XXX_PCI
 377        tristate "MIPS USB CI13xxx PCI UDC"
 378        depends on PCI
 379        select USB_GADGET_DUALSPEED
 380        help
 381          MIPS USB IP core family device controller
 382          Currently it only supports IP part number CI13412
 383
 384          Say "y" to link the driver statically, or "m" to build a
 385          dynamically linked module called "ci13xxx_udc" and force all
 386          gadget drivers to also be dynamically linked.
 387
 388config USB_NET2272
 389        tristate "PLX NET2272"
 390        select USB_GADGET_DUALSPEED
 391        help
 392          PLX NET2272 is a USB peripheral controller which supports
 393          both full and high speed USB 2.0 data transfers.
 394
 395          It has three configurable endpoints, as well as endpoint zero
 396          (for control transfer).
 397          Say "y" to link the driver statically, or "m" to build a
 398          dynamically linked module called "net2272" and force all
 399          gadget drivers to also be dynamically linked.
 400
 401config USB_NET2272_DMA
 402        boolean "Support external DMA controller"
 403        depends on USB_NET2272
 404        help
 405          The NET2272 part can optionally support an external DMA
 406          controller, but your board has to have support in the
 407          driver itself.
 408
 409          If unsure, say "N" here.  The driver works fine in PIO mode.
 410
 411config USB_NET2280
 412        tristate "NetChip 228x"
 413        depends on PCI
 414        select USB_GADGET_DUALSPEED
 415        help
 416           NetChip 2280 / 2282 is a PCI based USB peripheral controller which
 417           supports both full and high speed USB 2.0 data transfers.
 418
 419           It has six configurable endpoints, as well as endpoint zero
 420           (for control transfers) and several endpoints with dedicated
 421           functions.
 422
 423           Say "y" to link the driver statically, or "m" to build a
 424           dynamically linked module called "net2280" and force all
 425           gadget drivers to also be dynamically linked.
 426
 427config USB_GOKU
 428        tristate "Toshiba TC86C001 'Goku-S'"
 429        depends on PCI
 430        help
 431           The Toshiba TC86C001 is a PCI device which includes controllers
 432           for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
 433
 434           The device controller has three configurable (bulk or interrupt)
 435           endpoints, plus endpoint zero (for control transfers).
 436
 437           Say "y" to link the driver statically, or "m" to build a
 438           dynamically linked module called "goku_udc" and to force all
 439           gadget drivers to also be dynamically linked.
 440
 441config USB_LANGWELL
 442        tristate "Intel Langwell USB Device Controller"
 443        depends on PCI
 444        depends on !PHYS_ADDR_T_64BIT
 445        select USB_GADGET_DUALSPEED
 446        help
 447           Intel Langwell USB Device Controller is a High-Speed USB
 448           On-The-Go device controller.
 449
 450           The number of programmable endpoints is different through
 451           controller revision.
 452
 453           Say "y" to link the driver statically, or "m" to build a
 454           dynamically linked module called "langwell_udc" and force all
 455           gadget drivers to also be dynamically linked.
 456
 457config USB_EG20T
 458        tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
 459        depends on PCI
 460        select USB_GADGET_DUALSPEED
 461        help
 462          This is a USB device driver for EG20T PCH.
 463          EG20T PCH is the platform controller hub that is used in Intel's
 464          general embedded platform. EG20T PCH has USB device interface.
 465          Using this interface, it is able to access system devices connected
 466          to USB device.
 467          This driver enables USB device function.
 468          USB device is a USB peripheral controller which
 469          supports both full and high speed USB 2.0 data transfers.
 470          This driver supports both control transfer and bulk transfer modes.
 471          This driver dose not support interrupt transfer or isochronous
 472          transfer modes.
 473
 474          This driver also can be used for LAPIS Semiconductor's ML7213 which is
 475          for IVI(In-Vehicle Infotainment) use.
 476          ML7831 is for general purpose use.
 477          ML7213/ML7831 is companion chip for Intel Atom E6xx series.
 478          ML7213/ML7831 is completely compatible for Intel EG20T PCH.
 479
 480config USB_CI13XXX_MSM
 481        tristate "MIPS USB CI13xxx for MSM"
 482        depends on ARCH_MSM
 483        select USB_GADGET_DUALSPEED
 484        select USB_MSM_OTG
 485        help
 486          MSM SoC has chipidea USB controller.  This driver uses
 487          ci13xxx_udc core.
 488          This driver depends on OTG driver for PHY initialization,
 489          clock management, powering up VBUS, and power management.
 490          This driver is not supported on boards like trout which
 491          has an external PHY.
 492
 493          Say "y" to link the driver statically, or "m" to build a
 494          dynamically linked module called "ci13xxx_msm" and force all
 495          gadget drivers to also be dynamically linked.
 496
 497#
 498# LAST -- dummy/emulated controller
 499#
 500
 501config USB_DUMMY_HCD
 502        tristate "Dummy HCD (DEVELOPMENT)"
 503        depends on USB=y || (USB=m && USB_GADGET=m)
 504        select USB_GADGET_DUALSPEED
 505        select USB_GADGET_SUPERSPEED
 506        help
 507          This host controller driver emulates USB, looping all data transfer
 508          requests back to a USB "gadget driver" in the same host.  The host
 509          side is the master; the gadget side is the slave.  Gadget drivers
 510          can be high, full, or low speed; and they have access to endpoints
 511          like those from NET2280, PXA2xx, or SA1100 hardware.
 512
 513          This may help in some stages of creating a driver to embed in a
 514          Linux device, since it lets you debug several parts of the gadget
 515          driver without its hardware or drivers being involved.
 516
 517          Since such a gadget side driver needs to interoperate with a host
 518          side Linux-USB device driver, this may help to debug both sides
 519          of a USB protocol stack.
 520
 521          Say "y" to link the driver statically, or "m" to build a
 522          dynamically linked module called "dummy_hcd" and force all
 523          gadget drivers to also be dynamically linked.
 524
 525# NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
 526# first and will be selected by default.
 527
 528endchoice
 529
 530# Selected by UDC drivers that support high-speed operation.
 531config USB_GADGET_DUALSPEED
 532        bool
 533
 534# Selected by UDC drivers that support super-speed opperation
 535config USB_GADGET_SUPERSPEED
 536        bool
 537        depends on USB_GADGET_DUALSPEED
 538
 539#
 540# USB Gadget Drivers
 541#
 542choice
 543        tristate "USB Gadget Drivers"
 544        default USB_ETH
 545        help
 546          A Linux "Gadget Driver" talks to the USB Peripheral Controller
 547          driver through the abstract "gadget" API.  Some other operating
 548          systems call these "client" drivers, of which "class drivers"
 549          are a subset (implementing a USB device class specification).
 550          A gadget driver implements one or more USB functions using
 551          the peripheral hardware.
 552
 553          Gadget drivers are hardware-neutral, or "platform independent",
 554          except that they sometimes must understand quirks or limitations
 555          of the particular controllers they work with.  For example, when
 556          a controller doesn't support alternate configurations or provide
 557          enough of the right types of endpoints, the gadget driver might
 558          not be able work with that controller, or might need to implement
 559          a less common variant of a device class protocol.
 560
 561# this first set of drivers all depend on bulk-capable hardware.
 562
 563config USB_ZERO
 564        tristate "Gadget Zero (DEVELOPMENT)"
 565        help
 566          Gadget Zero is a two-configuration device.  It either sinks and
 567          sources bulk data; or it loops back a configurable number of
 568          transfers.  It also implements control requests, for "chapter 9"
 569          conformance.  The driver needs only two bulk-capable endpoints, so
 570          it can work on top of most device-side usb controllers.  It's
 571          useful for testing, and is also a working example showing how
 572          USB "gadget drivers" can be written.
 573
 574          Make this be the first driver you try using on top of any new
 575          USB peripheral controller driver.  Then you can use host-side
 576          test software, like the "usbtest" driver, to put your hardware
 577          and its driver through a basic set of functional tests.
 578
 579          Gadget Zero also works with the host-side "usb-skeleton" driver,
 580          and with many kinds of host-side test software.  You may need
 581          to tweak product and vendor IDs before host software knows about
 582          this device, and arrange to select an appropriate configuration.
 583
 584          Say "y" to link the driver statically, or "m" to build a
 585          dynamically linked module called "g_zero".
 586
 587config USB_ZERO_HNPTEST
 588        boolean "HNP Test Device"
 589        depends on USB_ZERO && USB_OTG
 590        help
 591          You can configure this device to enumerate using the device
 592          identifiers of the USB-OTG test device.  That means that when
 593          this gadget connects to another OTG device, with this one using
 594          the "B-Peripheral" role, that device will use HNP to let this
 595          one serve as the USB host instead (in the "B-Host" role).
 596
 597config USB_AUDIO
 598        tristate "Audio Gadget (EXPERIMENTAL)"
 599        depends on SND
 600        select SND_PCM
 601        help
 602          Gadget Audio is compatible with USB Audio Class specification 1.0.
 603          It will include at least one AudioControl interface, zero or more
 604          AudioStream interface and zero or more MIDIStream interface.
 605
 606          Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to
 607          playback or capture audio stream.
 608
 609          Say "y" to link the driver statically, or "m" to build a
 610          dynamically linked module called "g_audio".
 611
 612config USB_ETH
 613        tristate "Ethernet Gadget (with CDC Ethernet support)"
 614        depends on NET
 615        select CRC32
 616        help
 617          This driver implements Ethernet style communication, in one of
 618          several ways:
 619          
 620           - The "Communication Device Class" (CDC) Ethernet Control Model.
 621             That protocol is often avoided with pure Ethernet adapters, in
 622             favor of simpler vendor-specific hardware, but is widely
 623             supported by firmware for smart network devices.
 624
 625           - On hardware can't implement that protocol, a simple CDC subset
 626             is used, placing fewer demands on USB.
 627
 628           - CDC Ethernet Emulation Model (EEM) is a newer standard that has
 629             a simpler interface that can be used by more USB hardware.
 630
 631          RNDIS support is an additional option, more demanding than than
 632          subset.
 633
 634          Within the USB device, this gadget driver exposes a network device
 635          "usbX", where X depends on what other networking devices you have.
 636          Treat it like a two-node Ethernet link:  host, and gadget.
 637
 638          The Linux-USB host-side "usbnet" driver interoperates with this
 639          driver, so that deep I/O queues can be supported.  On 2.4 kernels,
 640          use "CDCEther" instead, if you're using the CDC option. That CDC
 641          mode should also interoperate with standard CDC Ethernet class
 642          drivers on other host operating systems.
 643
 644          Say "y" to link the driver statically, or "m" to build a
 645          dynamically linked module called "g_ether".
 646
 647config USB_ETH_RNDIS
 648        bool "RNDIS support"
 649        depends on USB_ETH
 650        default y
 651        help
 652           Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
 653           and Microsoft provides redistributable binary RNDIS drivers for
 654           older versions of Windows.
 655
 656           If you say "y" here, the Ethernet gadget driver will try to provide
 657           a second device configuration, supporting RNDIS to talk to such
 658           Microsoft USB hosts.
 659           
 660           To make MS-Windows work with this, use Documentation/usb/linux.inf
 661           as the "driver info file".  For versions of MS-Windows older than
 662           XP, you'll need to download drivers from Microsoft's website; a URL
 663           is given in comments found in that info file.
 664
 665config USB_ETH_EEM
 666       bool "Ethernet Emulation Model (EEM) support"
 667       depends on USB_ETH
 668       default n
 669       help
 670         CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
 671         and therefore can be supported by more hardware.  Technically ECM and
 672         EEM are designed for different applications.  The ECM model extends
 673         the network interface to the target (e.g. a USB cable modem), and the
 674         EEM model is for mobile devices to communicate with hosts using
 675         ethernet over USB.  For Linux gadgets, however, the interface with
 676         the host is the same (a usbX device), so the differences are minimal.
 677
 678         If you say "y" here, the Ethernet gadget driver will use the EEM
 679         protocol rather than ECM.  If unsure, say "n".
 680
 681config USB_G_NCM
 682        tristate "Network Control Model (NCM) support"
 683        depends on NET
 684        select CRC32
 685        help
 686          This driver implements USB CDC NCM subclass standard. NCM is
 687          an advanced protocol for Ethernet encapsulation, allows grouping
 688          of several ethernet frames into one USB transfer and diffferent
 689          alignment possibilities.
 690
 691          Say "y" to link the driver statically, or "m" to build a
 692          dynamically linked module called "g_ncm".
 693
 694config USB_GADGETFS
 695        tristate "Gadget Filesystem (EXPERIMENTAL)"
 696        depends on EXPERIMENTAL
 697        help
 698          This driver provides a filesystem based API that lets user mode
 699          programs implement a single-configuration USB device, including
 700          endpoint I/O and control requests that don't relate to enumeration.
 701          All endpoints, transfer speeds, and transfer types supported by
 702          the hardware are available, through read() and write() calls.
 703
 704          Currently, this option is still labelled as EXPERIMENTAL because
 705          of existing race conditions in the underlying in-kernel AIO core.
 706
 707          Say "y" to link the driver statically, or "m" to build a
 708          dynamically linked module called "gadgetfs".
 709
 710config USB_FUNCTIONFS
 711        tristate "Function Filesystem (EXPERIMENTAL)"
 712        depends on EXPERIMENTAL
 713        select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS)
 714        help
 715          The Function Filesystem (FunctionFS) lets one create USB
 716          composite functions in user space in the same way GadgetFS
 717          lets one create USB gadgets in user space.  This allows creation
 718          of composite gadgets such that some of the functions are
 719          implemented in kernel space (for instance Ethernet, serial or
 720          mass storage) and other are implemented in user space.
 721
 722          If you say "y" or "m" here you will be able what kind of
 723          configurations the gadget will provide.
 724
 725          Say "y" to link the driver statically, or "m" to build
 726          a dynamically linked module called "g_ffs".
 727
 728config USB_FUNCTIONFS_ETH
 729        bool "Include configuration with CDC ECM (Ethernet)"
 730        depends on USB_FUNCTIONFS && NET
 731        help
 732          Include a configuration with CDC ECM function (Ethernet) and the
 733          Function Filesystem.
 734
 735config USB_FUNCTIONFS_RNDIS
 736        bool "Include configuration with RNDIS (Ethernet)"
 737        depends on USB_FUNCTIONFS && NET
 738        help
 739          Include a configuration with RNDIS function (Ethernet) and the Filesystem.
 740
 741config USB_FUNCTIONFS_GENERIC
 742        bool "Include 'pure' configuration"
 743        depends on USB_FUNCTIONFS
 744        help
 745          Include a configuration with the Function Filesystem alone with
 746          no Ethernet interface.
 747
 748config USB_FILE_STORAGE
 749        tristate "File-backed Storage Gadget (DEPRECATED)"
 750        depends on BLOCK
 751        help
 752          The File-backed Storage Gadget acts as a USB Mass Storage
 753          disk drive.  As its storage repository it can use a regular
 754          file or a block device (in much the same way as the "loop"
 755          device driver), specified as a module parameter.
 756
 757          Say "y" to link the driver statically, or "m" to build a
 758          dynamically linked module called "g_file_storage".
 759
 760          NOTE: This driver is deprecated.  Its replacement is the
 761          Mass Storage Gadget.
 762
 763config USB_FILE_STORAGE_TEST
 764        bool "File-backed Storage Gadget testing version"
 765        depends on USB_FILE_STORAGE
 766        default n
 767        help
 768          Say "y" to generate the larger testing version of the
 769          File-backed Storage Gadget, useful for probing the
 770          behavior of USB Mass Storage hosts.  Not needed for
 771          normal operation.
 772
 773config USB_MASS_STORAGE
 774        tristate "Mass Storage Gadget"
 775        depends on BLOCK
 776        help
 777          The Mass Storage Gadget acts as a USB Mass Storage disk drive.
 778          As its storage repository it can use a regular file or a block
 779          device (in much the same way as the "loop" device driver),
 780          specified as a module parameter or sysfs option.
 781
 782          This driver is an updated replacement for the deprecated
 783          File-backed Storage Gadget (g_file_storage).
 784
 785          Say "y" to link the driver statically, or "m" to build
 786          a dynamically linked module called "g_mass_storage".
 787
 788config USB_G_SERIAL
 789        tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
 790        help
 791          The Serial Gadget talks to the Linux-USB generic serial driver.
 792          This driver supports a CDC-ACM module option, which can be used
 793          to interoperate with MS-Windows hosts or with the Linux-USB
 794          "cdc-acm" driver.
 795
 796          This driver also supports a CDC-OBEX option.  You will need a
 797          user space OBEX server talking to /dev/ttyGS*, since the kernel
 798          itself doesn't implement the OBEX protocol.
 799
 800          Say "y" to link the driver statically, or "m" to build a
 801          dynamically linked module called "g_serial".
 802
 803          For more information, see Documentation/usb/gadget_serial.txt
 804          which includes instructions and a "driver info file" needed to
 805          make MS-Windows work with CDC ACM.
 806
 807config USB_MIDI_GADGET
 808        tristate "MIDI Gadget (EXPERIMENTAL)"
 809        depends on SND && EXPERIMENTAL
 810        select SND_RAWMIDI
 811        help
 812          The MIDI Gadget acts as a USB Audio device, with one MIDI
 813          input and one MIDI output. These MIDI jacks appear as
 814          a sound "card" in the ALSA sound system. Other MIDI
 815          connections can then be made on the gadget system, using
 816          ALSA's aconnect utility etc.
 817
 818          Say "y" to link the driver statically, or "m" to build a
 819          dynamically linked module called "g_midi".
 820
 821config USB_G_PRINTER
 822        tristate "Printer Gadget"
 823        help
 824          The Printer Gadget channels data between the USB host and a
 825          userspace program driving the print engine. The user space
 826          program reads and writes the device file /dev/g_printer to
 827          receive or send printer data. It can use ioctl calls to
 828          the device file to get or set printer status.
 829
 830          Say "y" to link the driver statically, or "m" to build a
 831          dynamically linked module called "g_printer".
 832
 833          For more information, see Documentation/usb/gadget_printer.txt
 834          which includes sample code for accessing the device file.
 835
 836config USB_CDC_COMPOSITE
 837        tristate "CDC Composite Device (Ethernet and ACM)"
 838        depends on NET
 839        help
 840          This driver provides two functions in one configuration:
 841          a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
 842
 843          This driver requires four bulk and two interrupt endpoints,
 844          plus the ability to handle altsettings.  Not all peripheral
 845          controllers are that capable.
 846
 847          Say "y" to link the driver statically, or "m" to build a
 848          dynamically linked module.
 849
 850config USB_G_NOKIA
 851        tristate "Nokia composite gadget"
 852        depends on PHONET
 853        help
 854          The Nokia composite gadget provides support for acm, obex
 855          and phonet in only one composite gadget driver.
 856
 857          It's only really useful for N900 hardware. If you're building
 858          a kernel for N900, say Y or M here. If unsure, say N.
 859
 860config USB_G_ACM_MS
 861        tristate "CDC Composite Device (ACM and mass storage)"
 862        depends on BLOCK
 863        help
 864          This driver provides two functions in one configuration:
 865          a mass storage, and a CDC ACM (serial port) link.
 866
 867          Say "y" to link the driver statically, or "m" to build a
 868          dynamically linked module called "g_acm_ms".
 869
 870config USB_G_MULTI
 871        tristate "Multifunction Composite Gadget (EXPERIMENTAL)"
 872        depends on BLOCK && NET
 873        select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
 874        help
 875          The Multifunction Composite Gadget provides Ethernet (RNDIS
 876          and/or CDC Ethernet), mass storage and ACM serial link
 877          interfaces.
 878
 879          You will be asked to choose which of the two configurations is
 880          to be available in the gadget.  At least one configuration must
 881          be chosen to make the gadget usable.  Selecting more than one
 882          configuration will prevent Windows from automatically detecting
 883          the gadget as a composite gadget, so an INF file will be needed to
 884          use the gadget.
 885
 886          Say "y" to link the driver statically, or "m" to build a
 887          dynamically linked module called "g_multi".
 888
 889config USB_G_MULTI_RNDIS
 890        bool "RNDIS + CDC Serial + Storage configuration"
 891        depends on USB_G_MULTI
 892        default y
 893        help
 894          This option enables a configuration with RNDIS, CDC Serial and
 895          Mass Storage functions available in the Multifunction Composite
 896          Gadget.  This is the configuration dedicated for Windows since RNDIS
 897          is Microsoft's protocol.
 898
 899          If unsure, say "y".
 900
 901config USB_G_MULTI_CDC
 902        bool "CDC Ethernet + CDC Serial + Storage configuration"
 903        depends on USB_G_MULTI
 904        default n
 905        help
 906          This option enables a configuration with CDC Ethernet (ECM), CDC
 907          Serial and Mass Storage functions available in the Multifunction
 908          Composite Gadget.
 909
 910          If unsure, say "y".
 911
 912config USB_G_HID
 913        tristate "HID Gadget"
 914        help
 915          The HID gadget driver provides generic emulation of USB
 916          Human Interface Devices (HID).
 917
 918          For more information, see Documentation/usb/gadget_hid.txt which
 919          includes sample code for accessing the device files.
 920
 921          Say "y" to link the driver statically, or "m" to build a
 922          dynamically linked module called "g_hid".
 923
 924config USB_G_DBGP
 925        tristate "EHCI Debug Device Gadget"
 926        help
 927          This gadget emulates an EHCI Debug device. This is useful when you want
 928          to interact with an EHCI Debug Port.
 929
 930          Say "y" to link the driver statically, or "m" to build a
 931          dynamically linked module called "g_dbgp".
 932
 933if USB_G_DBGP
 934choice
 935        prompt "EHCI Debug Device mode"
 936        default USB_G_DBGP_SERIAL
 937
 938config USB_G_DBGP_PRINTK
 939        depends on USB_G_DBGP
 940        bool "printk"
 941        help
 942          Directly printk() received data. No interaction.
 943
 944config USB_G_DBGP_SERIAL
 945        depends on USB_G_DBGP
 946        bool "serial"
 947        help
 948          Userland can interact using /dev/ttyGSxxx.
 949endchoice
 950endif
 951
 952# put drivers that need isochronous transfer support (for audio
 953# or video class gadget drivers), or specific hardware, here.
 954config USB_G_WEBCAM
 955        tristate "USB Webcam Gadget"
 956        depends on VIDEO_DEV
 957        help
 958          The Webcam Gadget acts as a composite USB Audio and Video Class
 959          device. It provides a userspace API to process UVC control requests
 960          and stream video data to the host.
 961
 962          Say "y" to link the driver statically, or "m" to build a
 963          dynamically linked module called "g_webcam".
 964
 965endchoice
 966
 967endif # USB_GADGET
 968