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