xref: /linux/drivers/usb/gadget/Kconfig (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
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