1*1da177e4SLinus Torvalds# 2*1da177e4SLinus Torvalds# USB Gadget support on a system involves 3*1da177e4SLinus Torvalds# (a) a peripheral controller, and 4*1da177e4SLinus Torvalds# (b) the gadget driver using it. 5*1da177e4SLinus Torvalds# 6*1da177e4SLinus Torvalds# NOTE: Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! 7*1da177e4SLinus Torvalds# 8*1da177e4SLinus Torvalds# - Host systems (like PCs) need CONFIG_USB (with "A" jacks). 9*1da177e4SLinus Torvalds# - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). 10*1da177e4SLinus Torvalds# - Some systems have both kinds of of controller. 11*1da177e4SLinus Torvalds# 12*1da177e4SLinus Torvalds# With help from a special transceiver and a "Mini-AB" jack, systems with 13*1da177e4SLinus Torvalds# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). 14*1da177e4SLinus Torvalds# 15*1da177e4SLinus Torvaldsmenu "USB Gadget Support" 16*1da177e4SLinus Torvalds 17*1da177e4SLinus Torvaldsconfig USB_GADGET 18*1da177e4SLinus Torvalds tristate "Support for USB Gadgets" 19*1da177e4SLinus Torvalds help 20*1da177e4SLinus Torvalds USB is a master/slave protocol, organized with one master 21*1da177e4SLinus Torvalds host (such as a PC) controlling up to 127 peripheral devices. 22*1da177e4SLinus Torvalds The USB hardware is asymmetric, which makes it easier to set up: 23*1da177e4SLinus Torvalds you can't connect a "to-the-host" connector to a peripheral. 24*1da177e4SLinus Torvalds 25*1da177e4SLinus Torvalds Linux can run in the host, or in the peripheral. In both cases 26*1da177e4SLinus Torvalds you need a low level bus controller driver, and some software 27*1da177e4SLinus Torvalds talking to it. Peripheral controllers are often discrete silicon, 28*1da177e4SLinus Torvalds or are integrated with the CPU in a microcontroller. The more 29*1da177e4SLinus Torvalds familiar host side controllers have names like like "EHCI", "OHCI", 30*1da177e4SLinus Torvalds or "UHCI", and are usually integrated into southbridges on PC 31*1da177e4SLinus Torvalds motherboards. 32*1da177e4SLinus Torvalds 33*1da177e4SLinus Torvalds Enable this configuration option if you want to run Linux inside 34*1da177e4SLinus Torvalds a USB peripheral device. Configure one hardware driver for your 35*1da177e4SLinus Torvalds peripheral/device side bus controller, and a "gadget driver" for 36*1da177e4SLinus Torvalds your peripheral protocol. (If you use modular gadget drivers, 37*1da177e4SLinus Torvalds you may configure more than one.) 38*1da177e4SLinus Torvalds 39*1da177e4SLinus Torvalds If in doubt, say "N" and don't enable these drivers; most people 40*1da177e4SLinus Torvalds don't have this kind of hardware (except maybe inside Linux PDAs). 41*1da177e4SLinus Torvalds 42*1da177e4SLinus Torvalds For more information, see <http://www.linux-usb.org/gadget> and 43*1da177e4SLinus Torvalds the kernel DocBook documentation for this API. 44*1da177e4SLinus Torvalds 45*1da177e4SLinus Torvaldsconfig USB_GADGET_DEBUG_FILES 46*1da177e4SLinus Torvalds boolean "Debugging information files" 47*1da177e4SLinus Torvalds depends on USB_GADGET && PROC_FS 48*1da177e4SLinus Torvalds help 49*1da177e4SLinus Torvalds Some of the drivers in the "gadget" framework can expose 50*1da177e4SLinus Torvalds debugging information in files such as /proc/driver/udc 51*1da177e4SLinus Torvalds (for a peripheral controller). The information in these 52*1da177e4SLinus Torvalds files may help when you're troubleshooting or bringing up a 53*1da177e4SLinus Torvalds driver on a new board. Enable these files by choosing "Y" 54*1da177e4SLinus Torvalds here. If in doubt, or to conserve kernel memory, say "N". 55*1da177e4SLinus Torvalds 56*1da177e4SLinus Torvalds# 57*1da177e4SLinus Torvalds# USB Peripheral Controller Support 58*1da177e4SLinus Torvalds# 59*1da177e4SLinus Torvaldschoice 60*1da177e4SLinus Torvalds prompt "USB Peripheral Controller" 61*1da177e4SLinus Torvalds depends on USB_GADGET 62*1da177e4SLinus Torvalds help 63*1da177e4SLinus Torvalds A USB device uses a controller to talk to its host. 64*1da177e4SLinus Torvalds Systems should have only one such upstream link. 65*1da177e4SLinus Torvalds Many controller drivers are platform-specific; these 66*1da177e4SLinus Torvalds often need board-specific hooks. 67*1da177e4SLinus Torvalds 68*1da177e4SLinus Torvaldsconfig USB_GADGET_NET2280 69*1da177e4SLinus Torvalds boolean "NetChip 2280" 70*1da177e4SLinus Torvalds depends on PCI 71*1da177e4SLinus Torvalds select USB_GADGET_DUALSPEED 72*1da177e4SLinus Torvalds help 73*1da177e4SLinus Torvalds NetChip 2280 is a PCI based USB peripheral controller which 74*1da177e4SLinus Torvalds supports both full and high speed USB 2.0 data transfers. 75*1da177e4SLinus Torvalds 76*1da177e4SLinus Torvalds It has six configurable endpoints, as well as endpoint zero 77*1da177e4SLinus Torvalds (for control transfers) and several endpoints with dedicated 78*1da177e4SLinus Torvalds functions. 79*1da177e4SLinus Torvalds 80*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 81*1da177e4SLinus Torvalds dynamically linked module called "net2280" and force all 82*1da177e4SLinus Torvalds gadget drivers to also be dynamically linked. 83*1da177e4SLinus Torvalds 84*1da177e4SLinus Torvaldsconfig USB_NET2280 85*1da177e4SLinus Torvalds tristate 86*1da177e4SLinus Torvalds depends on USB_GADGET_NET2280 87*1da177e4SLinus Torvalds default USB_GADGET 88*1da177e4SLinus Torvalds 89*1da177e4SLinus Torvaldsconfig USB_GADGET_PXA2XX 90*1da177e4SLinus Torvalds boolean "PXA 25x or IXP 4xx" 91*1da177e4SLinus Torvalds depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 92*1da177e4SLinus Torvalds help 93*1da177e4SLinus Torvalds Intel's PXA 25x series XScale ARM-5TE processors include 94*1da177e4SLinus Torvalds an integrated full speed USB 1.1 device controller. The 95*1da177e4SLinus Torvalds controller in the IXP 4xx series is register-compatible. 96*1da177e4SLinus Torvalds 97*1da177e4SLinus Torvalds It has fifteen fixed-function endpoints, as well as endpoint 98*1da177e4SLinus Torvalds zero (for control transfers). 99*1da177e4SLinus Torvalds 100*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 101*1da177e4SLinus Torvalds dynamically linked module called "pxa2xx_udc" and force all 102*1da177e4SLinus Torvalds gadget drivers to also be dynamically linked. 103*1da177e4SLinus Torvalds 104*1da177e4SLinus Torvaldsconfig USB_PXA2XX 105*1da177e4SLinus Torvalds tristate 106*1da177e4SLinus Torvalds depends on USB_GADGET_PXA2XX 107*1da177e4SLinus Torvalds default USB_GADGET 108*1da177e4SLinus Torvalds 109*1da177e4SLinus Torvalds# if there's only one gadget driver, using only two bulk endpoints, 110*1da177e4SLinus Torvalds# don't waste memory for the other endpoints 111*1da177e4SLinus Torvaldsconfig USB_PXA2XX_SMALL 112*1da177e4SLinus Torvalds depends on USB_GADGET_PXA2XX 113*1da177e4SLinus Torvalds bool 114*1da177e4SLinus Torvalds default n if USB_ETH_RNDIS 115*1da177e4SLinus Torvalds default y if USB_ZERO 116*1da177e4SLinus Torvalds default y if USB_ETH 117*1da177e4SLinus Torvalds default y if USB_G_SERIAL 118*1da177e4SLinus Torvalds 119*1da177e4SLinus Torvaldsconfig USB_GADGET_GOKU 120*1da177e4SLinus Torvalds boolean "Toshiba TC86C001 'Goku-S'" 121*1da177e4SLinus Torvalds depends on PCI 122*1da177e4SLinus Torvalds help 123*1da177e4SLinus Torvalds The Toshiba TC86C001 is a PCI device which includes controllers 124*1da177e4SLinus Torvalds for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 125*1da177e4SLinus Torvalds 126*1da177e4SLinus Torvalds The device controller has three configurable (bulk or interrupt) 127*1da177e4SLinus Torvalds endpoints, plus endpoint zero (for control transfers). 128*1da177e4SLinus Torvalds 129*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 130*1da177e4SLinus Torvalds dynamically linked module called "goku_udc" and to force all 131*1da177e4SLinus Torvalds gadget drivers to also be dynamically linked. 132*1da177e4SLinus Torvalds 133*1da177e4SLinus Torvaldsconfig USB_GOKU 134*1da177e4SLinus Torvalds tristate 135*1da177e4SLinus Torvalds depends on USB_GADGET_GOKU 136*1da177e4SLinus Torvalds default USB_GADGET 137*1da177e4SLinus Torvalds 138*1da177e4SLinus Torvalds 139*1da177e4SLinus Torvaldsconfig USB_GADGET_LH7A40X 140*1da177e4SLinus Torvalds boolean "LH7A40X" 141*1da177e4SLinus Torvalds depends on ARCH_LH7A40X 142*1da177e4SLinus Torvalds help 143*1da177e4SLinus Torvalds This driver provides USB Device Controller driver for LH7A40x 144*1da177e4SLinus Torvalds 145*1da177e4SLinus Torvaldsconfig USB_LH7A40X 146*1da177e4SLinus Torvalds tristate 147*1da177e4SLinus Torvalds depends on USB_GADGET_LH7A40X 148*1da177e4SLinus Torvalds default USB_GADGET 149*1da177e4SLinus Torvalds 150*1da177e4SLinus Torvalds 151*1da177e4SLinus Torvaldsconfig USB_GADGET_OMAP 152*1da177e4SLinus Torvalds boolean "OMAP USB Device Controller" 153*1da177e4SLinus Torvalds depends on ARCH_OMAP 154*1da177e4SLinus Torvalds select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 155*1da177e4SLinus Torvalds help 156*1da177e4SLinus Torvalds Many Texas Instruments OMAP processors have flexible full 157*1da177e4SLinus Torvalds speed USB device controllers, with support for up to 30 158*1da177e4SLinus Torvalds endpoints (plus endpoint zero). This driver supports the 159*1da177e4SLinus Torvalds controller in the OMAP 1611, and should work with controllers 160*1da177e4SLinus Torvalds in other OMAP processors too, given minor tweaks. 161*1da177e4SLinus Torvalds 162*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 163*1da177e4SLinus Torvalds dynamically linked module called "omap_udc" and force all 164*1da177e4SLinus Torvalds gadget drivers to also be dynamically linked. 165*1da177e4SLinus Torvalds 166*1da177e4SLinus Torvaldsconfig USB_OMAP 167*1da177e4SLinus Torvalds tristate 168*1da177e4SLinus Torvalds depends on USB_GADGET_OMAP 169*1da177e4SLinus Torvalds default USB_GADGET 170*1da177e4SLinus Torvalds 171*1da177e4SLinus Torvaldsconfig USB_OTG 172*1da177e4SLinus Torvalds boolean "OTG Support" 173*1da177e4SLinus Torvalds depends on USB_GADGET_OMAP && ARCH_OMAP_OTG && USB_OHCI_HCD 174*1da177e4SLinus Torvalds help 175*1da177e4SLinus Torvalds The most notable feature of USB OTG is support for a 176*1da177e4SLinus Torvalds "Dual-Role" device, which can act as either a device 177*1da177e4SLinus Torvalds or a host. The initial role choice can be changed 178*1da177e4SLinus Torvalds later, when two dual-role devices talk to each other. 179*1da177e4SLinus Torvalds 180*1da177e4SLinus Torvalds Select this only if your OMAP board has a Mini-AB connector. 181*1da177e4SLinus Torvalds 182*1da177e4SLinus Torvalds 183*1da177e4SLinus Torvaldsconfig USB_GADGET_DUMMY_HCD 184*1da177e4SLinus Torvalds boolean "Dummy HCD (DEVELOPMENT)" 185*1da177e4SLinus Torvalds depends on USB && EXPERIMENTAL 186*1da177e4SLinus Torvalds select USB_GADGET_DUALSPEED 187*1da177e4SLinus Torvalds help 188*1da177e4SLinus Torvalds This host controller driver emulates USB, looping all data transfer 189*1da177e4SLinus Torvalds requests back to a USB "gadget driver" in the same host. The host 190*1da177e4SLinus Torvalds side is the master; the gadget side is the slave. Gadget drivers 191*1da177e4SLinus Torvalds can be high, full, or low speed; and they have access to endpoints 192*1da177e4SLinus Torvalds like those from NET2280, PXA2xx, or SA1100 hardware. 193*1da177e4SLinus Torvalds 194*1da177e4SLinus Torvalds This may help in some stages of creating a driver to embed in a 195*1da177e4SLinus Torvalds Linux device, since it lets you debug several parts of the gadget 196*1da177e4SLinus Torvalds driver without its hardware or drivers being involved. 197*1da177e4SLinus Torvalds 198*1da177e4SLinus Torvalds Since such a gadget side driver needs to interoperate with a host 199*1da177e4SLinus Torvalds side Linux-USB device driver, this may help to debug both sides 200*1da177e4SLinus Torvalds of a USB protocol stack. 201*1da177e4SLinus Torvalds 202*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 203*1da177e4SLinus Torvalds dynamically linked module called "dummy_hcd" and force all 204*1da177e4SLinus Torvalds gadget drivers to also be dynamically linked. 205*1da177e4SLinus Torvalds 206*1da177e4SLinus Torvaldsconfig USB_DUMMY_HCD 207*1da177e4SLinus Torvalds tristate 208*1da177e4SLinus Torvalds depends on USB_GADGET_DUMMY_HCD 209*1da177e4SLinus Torvalds default USB_GADGET 210*1da177e4SLinus Torvalds 211*1da177e4SLinus Torvalds# NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 212*1da177e4SLinus Torvalds# first and will be selected by default. 213*1da177e4SLinus Torvalds 214*1da177e4SLinus Torvaldsendchoice 215*1da177e4SLinus Torvalds 216*1da177e4SLinus Torvaldsconfig USB_GADGET_DUALSPEED 217*1da177e4SLinus Torvalds bool 218*1da177e4SLinus Torvalds depends on USB_GADGET 219*1da177e4SLinus Torvalds default n 220*1da177e4SLinus Torvalds help 221*1da177e4SLinus Torvalds Means that gadget drivers should include extra descriptors 222*1da177e4SLinus Torvalds and code to handle dual-speed controllers. 223*1da177e4SLinus Torvalds 224*1da177e4SLinus Torvalds# 225*1da177e4SLinus Torvalds# USB Gadget Drivers 226*1da177e4SLinus Torvalds# 227*1da177e4SLinus Torvaldschoice 228*1da177e4SLinus Torvalds tristate "USB Gadget Drivers" 229*1da177e4SLinus Torvalds depends on USB_GADGET 230*1da177e4SLinus Torvalds default USB_ETH 231*1da177e4SLinus Torvalds help 232*1da177e4SLinus Torvalds A Linux "Gadget Driver" talks to the USB Peripheral Controller 233*1da177e4SLinus Torvalds driver through the abstract "gadget" API. Some other operating 234*1da177e4SLinus Torvalds systems call these "client" drivers, of which "class drivers" 235*1da177e4SLinus Torvalds are a subset (implementing a USB device class specification). 236*1da177e4SLinus Torvalds A gadget driver implements one or more USB functions using 237*1da177e4SLinus Torvalds the peripheral hardware. 238*1da177e4SLinus Torvalds 239*1da177e4SLinus Torvalds Gadget drivers are hardware-neutral, or "platform independent", 240*1da177e4SLinus Torvalds except that they sometimes must understand quirks or limitations 241*1da177e4SLinus Torvalds of the particular controllers they work with. For example, when 242*1da177e4SLinus Torvalds a controller doesn't support alternate configurations or provide 243*1da177e4SLinus Torvalds enough of the right types of endpoints, the gadget driver might 244*1da177e4SLinus Torvalds not be able work with that controller, or might need to implement 245*1da177e4SLinus Torvalds a less common variant of a device class protocol. 246*1da177e4SLinus Torvalds 247*1da177e4SLinus Torvalds# this first set of drivers all depend on bulk-capable hardware. 248*1da177e4SLinus Torvalds 249*1da177e4SLinus Torvaldsconfig USB_ZERO 250*1da177e4SLinus Torvalds tristate "Gadget Zero (DEVELOPMENT)" 251*1da177e4SLinus Torvalds depends on EXPERIMENTAL 252*1da177e4SLinus Torvalds help 253*1da177e4SLinus Torvalds Gadget Zero is a two-configuration device. It either sinks and 254*1da177e4SLinus Torvalds sources bulk data; or it loops back a configurable number of 255*1da177e4SLinus Torvalds transfers. It also implements control requests, for "chapter 9" 256*1da177e4SLinus Torvalds conformance. The driver needs only two bulk-capable endpoints, so 257*1da177e4SLinus Torvalds it can work on top of most device-side usb controllers. It's 258*1da177e4SLinus Torvalds useful for testing, and is also a working example showing how 259*1da177e4SLinus Torvalds USB "gadget drivers" can be written. 260*1da177e4SLinus Torvalds 261*1da177e4SLinus Torvalds Make this be the first driver you try using on top of any new 262*1da177e4SLinus Torvalds USB peripheral controller driver. Then you can use host-side 263*1da177e4SLinus Torvalds test software, like the "usbtest" driver, to put your hardware 264*1da177e4SLinus Torvalds and its driver through a basic set of functional tests. 265*1da177e4SLinus Torvalds 266*1da177e4SLinus Torvalds Gadget Zero also works with the host-side "usb-skeleton" driver, 267*1da177e4SLinus Torvalds and with many kinds of host-side test software. You may need 268*1da177e4SLinus Torvalds to tweak product and vendor IDs before host software knows about 269*1da177e4SLinus Torvalds this device, and arrange to select an appropriate configuration. 270*1da177e4SLinus Torvalds 271*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 272*1da177e4SLinus Torvalds dynamically linked module called "g_zero". 273*1da177e4SLinus Torvalds 274*1da177e4SLinus Torvaldsconfig USB_ZERO_HNPTEST 275*1da177e4SLinus Torvalds boolean "HNP Test Device" 276*1da177e4SLinus Torvalds depends on USB_ZERO && USB_OTG 277*1da177e4SLinus Torvalds help 278*1da177e4SLinus Torvalds You can configure this device to enumerate using the device 279*1da177e4SLinus Torvalds identifiers of the USB-OTG test device. That means that when 280*1da177e4SLinus Torvalds this gadget connects to another OTG device, with this one using 281*1da177e4SLinus Torvalds the "B-Peripheral" role, that device will use HNP to let this 282*1da177e4SLinus Torvalds one serve as the USB host instead (in the "B-Host" role). 283*1da177e4SLinus Torvalds 284*1da177e4SLinus Torvaldsconfig USB_ETH 285*1da177e4SLinus Torvalds tristate "Ethernet Gadget (with CDC Ethernet support)" 286*1da177e4SLinus Torvalds depends on NET 287*1da177e4SLinus Torvalds help 288*1da177e4SLinus Torvalds This driver implements Ethernet style communication, in either 289*1da177e4SLinus Torvalds of two ways: 290*1da177e4SLinus Torvalds 291*1da177e4SLinus Torvalds - The "Communication Device Class" (CDC) Ethernet Control Model. 292*1da177e4SLinus Torvalds That protocol is often avoided with pure Ethernet adapters, in 293*1da177e4SLinus Torvalds favor of simpler vendor-specific hardware, but is widely 294*1da177e4SLinus Torvalds supported by firmware for smart network devices. 295*1da177e4SLinus Torvalds 296*1da177e4SLinus Torvalds - On hardware can't implement that protocol, a simple CDC subset 297*1da177e4SLinus Torvalds is used, placing fewer demands on USB. 298*1da177e4SLinus Torvalds 299*1da177e4SLinus Torvalds RNDIS support is a third option, more demanding than that subset. 300*1da177e4SLinus Torvalds 301*1da177e4SLinus Torvalds Within the USB device, this gadget driver exposes a network device 302*1da177e4SLinus Torvalds "usbX", where X depends on what other networking devices you have. 303*1da177e4SLinus Torvalds Treat it like a two-node Ethernet link: host, and gadget. 304*1da177e4SLinus Torvalds 305*1da177e4SLinus Torvalds The Linux-USB host-side "usbnet" driver interoperates with this 306*1da177e4SLinus Torvalds driver, so that deep I/O queues can be supported. On 2.4 kernels, 307*1da177e4SLinus Torvalds use "CDCEther" instead, if you're using the CDC option. That CDC 308*1da177e4SLinus Torvalds mode should also interoperate with standard CDC Ethernet class 309*1da177e4SLinus Torvalds drivers on other host operating systems. 310*1da177e4SLinus Torvalds 311*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 312*1da177e4SLinus Torvalds dynamically linked module called "g_ether". 313*1da177e4SLinus Torvalds 314*1da177e4SLinus Torvaldsconfig USB_ETH_RNDIS 315*1da177e4SLinus Torvalds bool "RNDIS support (EXPERIMENTAL)" 316*1da177e4SLinus Torvalds depends on USB_ETH && EXPERIMENTAL 317*1da177e4SLinus Torvalds default y 318*1da177e4SLinus Torvalds help 319*1da177e4SLinus Torvalds Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol, 320*1da177e4SLinus Torvalds and Microsoft provides redistributable binary RNDIS drivers for 321*1da177e4SLinus Torvalds older versions of Windows. 322*1da177e4SLinus Torvalds 323*1da177e4SLinus Torvalds If you say "y" here, the Ethernet gadget driver will try to provide 324*1da177e4SLinus Torvalds a second device configuration, supporting RNDIS to talk to such 325*1da177e4SLinus Torvalds Microsoft USB hosts. 326*1da177e4SLinus Torvalds 327*1da177e4SLinus Torvalds To make MS-Windows work with this, use Documentation/usb/linux.inf 328*1da177e4SLinus Torvalds as the "driver info file". For versions of MS-Windows older than 329*1da177e4SLinus Torvalds XP, you'll need to download drivers from Microsoft's website; a URL 330*1da177e4SLinus Torvalds is given in comments found in that info file. 331*1da177e4SLinus Torvalds 332*1da177e4SLinus Torvaldsconfig USB_GADGETFS 333*1da177e4SLinus Torvalds tristate "Gadget Filesystem (EXPERIMENTAL)" 334*1da177e4SLinus Torvalds depends on EXPERIMENTAL 335*1da177e4SLinus Torvalds help 336*1da177e4SLinus Torvalds This driver provides a filesystem based API that lets user mode 337*1da177e4SLinus Torvalds programs implement a single-configuration USB device, including 338*1da177e4SLinus Torvalds endpoint I/O and control requests that don't relate to enumeration. 339*1da177e4SLinus Torvalds All endpoints, transfer speeds, and transfer types supported by 340*1da177e4SLinus Torvalds the hardware are available, through read() and write() calls. 341*1da177e4SLinus Torvalds 342*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 343*1da177e4SLinus Torvalds dynamically linked module called "gadgetfs". 344*1da177e4SLinus Torvalds 345*1da177e4SLinus Torvaldsconfig USB_FILE_STORAGE 346*1da177e4SLinus Torvalds tristate "File-backed Storage Gadget" 347*1da177e4SLinus Torvalds help 348*1da177e4SLinus Torvalds The File-backed Storage Gadget acts as a USB Mass Storage 349*1da177e4SLinus Torvalds disk drive. As its storage repository it can use a regular 350*1da177e4SLinus Torvalds file or a block device (in much the same way as the "loop" 351*1da177e4SLinus Torvalds device driver), specified as a module parameter. 352*1da177e4SLinus Torvalds 353*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 354*1da177e4SLinus Torvalds dynamically linked module called "g_file_storage". 355*1da177e4SLinus Torvalds 356*1da177e4SLinus Torvaldsconfig USB_FILE_STORAGE_TEST 357*1da177e4SLinus Torvalds bool "File-backed Storage Gadget testing version" 358*1da177e4SLinus Torvalds depends on USB_FILE_STORAGE 359*1da177e4SLinus Torvalds default n 360*1da177e4SLinus Torvalds help 361*1da177e4SLinus Torvalds Say "y" to generate the larger testing version of the 362*1da177e4SLinus Torvalds File-backed Storage Gadget, useful for probing the 363*1da177e4SLinus Torvalds behavior of USB Mass Storage hosts. Not needed for 364*1da177e4SLinus Torvalds normal operation. 365*1da177e4SLinus Torvalds 366*1da177e4SLinus Torvaldsconfig USB_G_SERIAL 367*1da177e4SLinus Torvalds tristate "Serial Gadget (with CDC ACM support)" 368*1da177e4SLinus Torvalds help 369*1da177e4SLinus Torvalds The Serial Gadget talks to the Linux-USB generic serial driver. 370*1da177e4SLinus Torvalds This driver supports a CDC-ACM module option, which can be used 371*1da177e4SLinus Torvalds to interoperate with MS-Windows hosts or with the Linux-USB 372*1da177e4SLinus Torvalds "cdc-acm" driver. 373*1da177e4SLinus Torvalds 374*1da177e4SLinus Torvalds Say "y" to link the driver statically, or "m" to build a 375*1da177e4SLinus Torvalds dynamically linked module called "g_serial". 376*1da177e4SLinus Torvalds 377*1da177e4SLinus Torvalds For more information, see Documentation/usb/gadget_serial.txt 378*1da177e4SLinus Torvalds which includes instructions and a "driver info file" needed to 379*1da177e4SLinus Torvalds make MS-Windows work with this driver. 380*1da177e4SLinus Torvalds 381*1da177e4SLinus Torvalds 382*1da177e4SLinus Torvalds# put drivers that need isochronous transfer support (for audio 383*1da177e4SLinus Torvalds# or video class gadget drivers), or specific hardware, here. 384*1da177e4SLinus Torvalds 385*1da177e4SLinus Torvalds# - none yet 386*1da177e4SLinus Torvalds 387*1da177e4SLinus Torvaldsendchoice 388*1da177e4SLinus Torvalds 389*1da177e4SLinus Torvaldsendmenu 390