Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6.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 if 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_FUSB300
180         boolean "Faraday FUSB300 USB Peripheral Controller"
181         select USB_GADGET_DUALSPEED
182         help
183            Faraday usb device controller FUSB300 driver
184
185 config USB_FUSB300
186         tristate
187         depends on USB_GADGET_FUSB300
188         default USB_GADGET
189         select USB_GADGET_SELECTED
190
191 config USB_GADGET_LH7A40X
192         boolean "LH7A40X"
193         depends on ARCH_LH7A40X
194         help
195            This driver provides USB Device Controller driver for LH7A40x
196
197 config USB_LH7A40X
198         tristate
199         depends on USB_GADGET_LH7A40X
200         default USB_GADGET
201         select USB_GADGET_SELECTED
202
203 config USB_GADGET_OMAP
204         boolean "OMAP USB Device Controller"
205         depends on ARCH_OMAP
206         select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG
207         select USB_OTG_UTILS if ARCH_OMAP
208         help
209            Many Texas Instruments OMAP processors have flexible full
210            speed USB device controllers, with support for up to 30
211            endpoints (plus endpoint zero).  This driver supports the
212            controller in the OMAP 1611, and should work with controllers
213            in other OMAP processors too, given minor tweaks.
214
215            Say "y" to link the driver statically, or "m" to build a
216            dynamically linked module called "omap_udc" and force all
217            gadget drivers to also be dynamically linked.
218
219 config USB_OMAP
220         tristate
221         depends on USB_GADGET_OMAP
222         default USB_GADGET
223         select USB_GADGET_SELECTED
224
225 config USB_GADGET_PXA25X
226         boolean "PXA 25x or IXP 4xx"
227         depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
228         select USB_OTG_UTILS
229         help
230            Intel's PXA 25x series XScale ARM-5TE processors include
231            an integrated full speed USB 1.1 device controller.  The
232            controller in the IXP 4xx series is register-compatible.
233
234            It has fifteen fixed-function endpoints, as well as endpoint
235            zero (for control transfers).
236
237            Say "y" to link the driver statically, or "m" to build a
238            dynamically linked module called "pxa25x_udc" and force all
239            gadget drivers to also be dynamically linked.
240
241 config USB_PXA25X
242         tristate
243         depends on USB_GADGET_PXA25X
244         default USB_GADGET
245         select USB_GADGET_SELECTED
246
247 # if there's only one gadget driver, using only two bulk endpoints,
248 # don't waste memory for the other endpoints
249 config USB_PXA25X_SMALL
250         depends on USB_GADGET_PXA25X
251         bool
252         default n if USB_ETH_RNDIS
253         default y if USB_ZERO
254         default y if USB_ETH
255         default y if USB_G_SERIAL
256
257 config USB_GADGET_R8A66597
258         boolean "Renesas R8A66597 USB Peripheral Controller"
259         select USB_GADGET_DUALSPEED
260         help
261            R8A66597 is a discrete USB host and peripheral controller chip that
262            supports both full and high speed USB 2.0 data transfers.
263            It has nine configurable endpoints, and endpoint zero.
264
265            Say "y" to link the driver statically, or "m" to build a
266            dynamically linked module called "r8a66597_udc" and force all
267            gadget drivers to also be dynamically linked.
268
269 config USB_R8A66597
270         tristate
271         depends on USB_GADGET_R8A66597
272         default USB_GADGET
273         select USB_GADGET_SELECTED
274
275 config USB_GADGET_PXA27X
276         boolean "PXA 27x"
277         depends on ARCH_PXA && (PXA27x || PXA3xx)
278         select USB_OTG_UTILS
279         help
280            Intel's PXA 27x series XScale ARM v5TE processors include
281            an integrated full speed USB 1.1 device controller.
282
283            It has up to 23 endpoints, as well as endpoint zero (for
284            control transfers).
285
286            Say "y" to link the driver statically, or "m" to build a
287            dynamically linked module called "pxa27x_udc" and force all
288            gadget drivers to also be dynamically linked.
289
290 config USB_PXA27X
291         tristate
292         depends on USB_GADGET_PXA27X
293         default USB_GADGET
294         select USB_GADGET_SELECTED
295
296 config USB_GADGET_S3C_HSOTG
297         boolean "S3C HS/OtG USB Device controller"
298         depends on S3C_DEV_USB_HSOTG
299         select USB_GADGET_S3C_HSOTG_PIO
300         select USB_GADGET_DUALSPEED
301         help
302           The Samsung S3C64XX USB2.0 high-speed gadget controller
303           integrated into the S3C64XX series SoC.
304
305 config USB_S3C_HSOTG
306         tristate
307         depends on USB_GADGET_S3C_HSOTG
308         default USB_GADGET
309         select USB_GADGET_SELECTED
310
311 config USB_GADGET_IMX
312         boolean "Freescale IMX USB Peripheral Controller"
313         depends on ARCH_MX1
314         help
315            Freescale's IMX series include an integrated full speed
316            USB 1.1 device controller.  The controller in the IMX series
317            is register-compatible.
318
319            It has Six fixed-function endpoints, as well as endpoint
320            zero (for control transfers).
321
322            Say "y" to link the driver statically, or "m" to build a
323            dynamically linked module called "imx_udc" and force all
324            gadget drivers to also be dynamically linked.
325
326 config USB_IMX
327         tristate
328         depends on USB_GADGET_IMX
329         default USB_GADGET
330         select USB_GADGET_SELECTED
331
332 config USB_GADGET_S3C2410
333         boolean "S3C2410 USB Device Controller"
334         depends on ARCH_S3C2410
335         help
336           Samsung's S3C2410 is an ARM-4 processor with an integrated
337           full speed USB 1.1 device controller.  It has 4 configurable
338           endpoints, as well as endpoint zero (for control transfers).
339
340           This driver has been tested on the S3C2410, S3C2412, and
341           S3C2440 processors.
342
343 config USB_S3C2410
344         tristate
345         depends on USB_GADGET_S3C2410
346         default USB_GADGET
347         select USB_GADGET_SELECTED
348
349 config USB_S3C2410_DEBUG
350         boolean "S3C2410 udc debug messages"
351         depends on USB_GADGET_S3C2410
352
353 config USB_GADGET_PXA_U2O
354         boolean "PXA9xx Processor USB2.0 controller"
355         select USB_GADGET_DUALSPEED
356         help
357           PXA9xx Processor series include a high speed USB2.0 device
358           controller, which support high speed and full speed USB peripheral.
359
360 config USB_PXA_U2O
361         tristate
362         depends on USB_GADGET_PXA_U2O
363         default USB_GADGET
364         select USB_GADGET_SELECTED
365
366 #
367 # Controllers available in both integrated and discrete versions
368 #
369
370 # musb builds in ../musb along with host support
371 config USB_GADGET_MUSB_HDRC
372         boolean "Inventra HDRC USB Peripheral (TI, ADI, ...)"
373         depends on USB_MUSB_HDRC && (USB_MUSB_PERIPHERAL || USB_MUSB_OTG)
374         select USB_GADGET_DUALSPEED
375         select USB_GADGET_SELECTED
376         help
377           This OTG-capable silicon IP is used in dual designs including
378           the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin
379
380 config USB_GADGET_M66592
381         boolean "Renesas M66592 USB Peripheral Controller"
382         select USB_GADGET_DUALSPEED
383         help
384            M66592 is a discrete USB peripheral controller chip that
385            supports both full and high speed USB 2.0 data transfers.
386            It has seven configurable endpoints, and endpoint zero.
387
388            Say "y" to link the driver statically, or "m" to build a
389            dynamically linked module called "m66592_udc" and force all
390            gadget drivers to also be dynamically linked.
391
392 config USB_M66592
393         tristate
394         depends on USB_GADGET_M66592
395         default USB_GADGET
396         select USB_GADGET_SELECTED
397
398 #
399 # Controllers available only in discrete form (and all PCI controllers)
400 #
401
402 config USB_GADGET_AMD5536UDC
403         boolean "AMD5536 UDC"
404         depends on PCI
405         select USB_GADGET_DUALSPEED
406         help
407            The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
408            It is a USB Highspeed DMA capable USB device controller. Beside ep0
409            it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
410            The UDC port supports OTG operation, and may be used as a host port
411            if it's not being used to implement peripheral or OTG roles.
412
413            Say "y" to link the driver statically, or "m" to build a
414            dynamically linked module called "amd5536udc" and force all
415            gadget drivers to also be dynamically linked.
416
417 config USB_AMD5536UDC
418         tristate
419         depends on USB_GADGET_AMD5536UDC
420         default USB_GADGET
421         select USB_GADGET_SELECTED
422
423 config USB_GADGET_FSL_QE
424         boolean "Freescale QE/CPM USB Device Controller"
425         depends on FSL_SOC && (QUICC_ENGINE || CPM)
426         help
427            Some of Freescale PowerPC processors have a Full Speed
428            QE/CPM2 USB controller, which support device mode with 4
429            programmable endpoints. This driver supports the
430            controller in the MPC8360 and MPC8272, and should work with
431            controllers having QE or CPM2, given minor tweaks.
432
433            Set CONFIG_USB_GADGET to "m" to build this driver as a
434            dynamically linked module called "fsl_qe_udc".
435
436 config USB_FSL_QE
437         tristate
438         depends on USB_GADGET_FSL_QE
439         default USB_GADGET
440         select USB_GADGET_SELECTED
441
442 config USB_GADGET_CI13XXX_PCI
443         boolean "MIPS USB CI13xxx PCI UDC"
444         depends on PCI
445         select USB_GADGET_DUALSPEED
446         help
447           MIPS USB IP core family device controller
448           Currently it only supports IP part number CI13412
449
450           Say "y" to link the driver statically, or "m" to build a
451           dynamically linked module called "ci13xxx_udc" and force all
452           gadget drivers to also be dynamically linked.
453
454 config USB_CI13XXX_PCI
455         tristate
456         depends on USB_GADGET_CI13XXX_PCI
457         default USB_GADGET
458         select USB_GADGET_SELECTED
459
460 config USB_GADGET_NET2280
461         boolean "NetChip 228x"
462         depends on PCI
463         select USB_GADGET_DUALSPEED
464         help
465            NetChip 2280 / 2282 is a PCI based USB peripheral controller which
466            supports both full and high speed USB 2.0 data transfers.
467
468            It has six configurable endpoints, as well as endpoint zero
469            (for control transfers) and several endpoints with dedicated
470            functions.
471
472            Say "y" to link the driver statically, or "m" to build a
473            dynamically linked module called "net2280" and force all
474            gadget drivers to also be dynamically linked.
475
476 config USB_NET2280
477         tristate
478         depends on USB_GADGET_NET2280
479         default USB_GADGET
480         select USB_GADGET_SELECTED
481
482 config USB_GADGET_GOKU
483         boolean "Toshiba TC86C001 'Goku-S'"
484         depends on PCI
485         help
486            The Toshiba TC86C001 is a PCI device which includes controllers
487            for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
488
489            The device controller has three configurable (bulk or interrupt)
490            endpoints, plus endpoint zero (for control transfers).
491
492            Say "y" to link the driver statically, or "m" to build a
493            dynamically linked module called "goku_udc" and to force all
494            gadget drivers to also be dynamically linked.
495
496 config USB_GOKU
497         tristate
498         depends on USB_GADGET_GOKU
499         default USB_GADGET
500         select USB_GADGET_SELECTED
501
502 config USB_GADGET_LANGWELL
503         boolean "Intel Langwell USB Device Controller"
504         depends on PCI
505         select USB_GADGET_DUALSPEED
506         help
507            Intel Langwell USB Device Controller is a High-Speed USB
508            On-The-Go device controller.
509
510            The number of programmable endpoints is different through
511            controller revision.
512
513            Say "y" to link the driver statically, or "m" to build a
514            dynamically linked module called "langwell_udc" and force all
515            gadget drivers to also be dynamically linked.
516
517 config USB_LANGWELL
518         tristate
519         depends on USB_GADGET_LANGWELL
520         default USB_GADGET
521         select USB_GADGET_SELECTED
522
523 config USB_GADGET_EG20T
524         boolean "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH UDC"
525         depends on PCI
526         select USB_GADGET_DUALSPEED
527         help
528           This is a USB device driver for EG20T PCH.
529           EG20T PCH is the platform controller hub that is used in Intel's
530           general embedded platform. EG20T PCH has USB device interface.
531           Using this interface, it is able to access system devices connected
532           to USB device.
533           This driver enables USB device function.
534           USB device is a USB peripheral controller which
535           supports both full and high speed USB 2.0 data transfers.
536           This driver supports both control transfer and bulk transfer modes.
537           This driver dose not support interrupt transfer or isochronous
538           transfer modes.
539
540           This driver also can be used for OKI SEMICONDUCTOR's ML7213 which is
541           for IVI(In-Vehicle Infotainment) use.
542           ML7213 is companion chip for Intel Atom E6xx series.
543           ML7213 is completely compatible for Intel EG20T PCH.
544
545 config USB_EG20T
546         tristate
547         depends on USB_GADGET_EG20T
548         default USB_GADGET
549         select USB_GADGET_SELECTED
550
551 config USB_GADGET_CI13XXX_MSM
552         boolean "MIPS USB CI13xxx for MSM"
553         depends on ARCH_MSM
554         select USB_GADGET_DUALSPEED
555         select USB_MSM_OTG
556         help
557           MSM SoC has chipidea USB controller.  This driver uses
558           ci13xxx_udc core.
559           This driver depends on OTG driver for PHY initialization,
560           clock management, powering up VBUS, and power management.
561           This driver is not supported on boards like trout which
562           has an external PHY.
563
564           Say "y" to link the driver statically, or "m" to build a
565           dynamically linked module called "ci13xxx_msm" and force all
566           gadget drivers to also be dynamically linked.
567
568 config USB_CI13XXX_MSM
569         tristate
570         depends on USB_GADGET_CI13XXX_MSM
571         default USB_GADGET
572         select USB_GADGET_SELECTED
573
574 #
575 # LAST -- dummy/emulated controller
576 #
577
578 config USB_GADGET_DUMMY_HCD
579         boolean "Dummy HCD (DEVELOPMENT)"
580         depends on USB=y || (USB=m && USB_GADGET=m)
581         select USB_GADGET_DUALSPEED
582         help
583           This host controller driver emulates USB, looping all data transfer
584           requests back to a USB "gadget driver" in the same host.  The host
585           side is the master; the gadget side is the slave.  Gadget drivers
586           can be high, full, or low speed; and they have access to endpoints
587           like those from NET2280, PXA2xx, or SA1100 hardware.
588           
589           This may help in some stages of creating a driver to embed in a
590           Linux device, since it lets you debug several parts of the gadget
591           driver without its hardware or drivers being involved.
592           
593           Since such a gadget side driver needs to interoperate with a host
594           side Linux-USB device driver, this may help to debug both sides
595           of a USB protocol stack.
596
597           Say "y" to link the driver statically, or "m" to build a
598           dynamically linked module called "dummy_hcd" and force all
599           gadget drivers to also be dynamically linked.
600
601 config USB_DUMMY_HCD
602         tristate
603         depends on USB_GADGET_DUMMY_HCD
604         default USB_GADGET
605         select USB_GADGET_SELECTED
606
607 # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
608 # first and will be selected by default.
609
610 endchoice
611
612 config USB_GADGET_DUALSPEED
613         bool
614         depends on USB_GADGET
615         default n
616         help
617           Means that gadget drivers should include extra descriptors
618           and code to handle dual-speed controllers.
619
620 #
621 # USB Gadget Drivers
622 #
623 choice
624         tristate "USB Gadget Drivers"
625         depends on USB_GADGET && USB_GADGET_SELECTED
626         default USB_ETH
627         help
628           A Linux "Gadget Driver" talks to the USB Peripheral Controller
629           driver through the abstract "gadget" API.  Some other operating
630           systems call these "client" drivers, of which "class drivers"
631           are a subset (implementing a USB device class specification).
632           A gadget driver implements one or more USB functions using
633           the peripheral hardware.
634
635           Gadget drivers are hardware-neutral, or "platform independent",
636           except that they sometimes must understand quirks or limitations
637           of the particular controllers they work with.  For example, when
638           a controller doesn't support alternate configurations or provide
639           enough of the right types of endpoints, the gadget driver might
640           not be able work with that controller, or might need to implement
641           a less common variant of a device class protocol.
642
643 # this first set of drivers all depend on bulk-capable hardware.
644
645 config USB_ZERO
646         tristate "Gadget Zero (DEVELOPMENT)"
647         help
648           Gadget Zero is a two-configuration device.  It either sinks and
649           sources bulk data; or it loops back a configurable number of
650           transfers.  It also implements control requests, for "chapter 9"
651           conformance.  The driver needs only two bulk-capable endpoints, so
652           it can work on top of most device-side usb controllers.  It's
653           useful for testing, and is also a working example showing how
654           USB "gadget drivers" can be written.
655
656           Make this be the first driver you try using on top of any new
657           USB peripheral controller driver.  Then you can use host-side
658           test software, like the "usbtest" driver, to put your hardware
659           and its driver through a basic set of functional tests.
660
661           Gadget Zero also works with the host-side "usb-skeleton" driver,
662           and with many kinds of host-side test software.  You may need
663           to tweak product and vendor IDs before host software knows about
664           this device, and arrange to select an appropriate configuration.
665
666           Say "y" to link the driver statically, or "m" to build a
667           dynamically linked module called "g_zero".
668
669 config USB_ZERO_HNPTEST
670         boolean "HNP Test Device"
671         depends on USB_ZERO && USB_OTG
672         help
673           You can configure this device to enumerate using the device
674           identifiers of the USB-OTG test device.  That means that when
675           this gadget connects to another OTG device, with this one using
676           the "B-Peripheral" role, that device will use HNP to let this
677           one serve as the USB host instead (in the "B-Host" role).
678
679 config USB_AUDIO
680         tristate "Audio Gadget (EXPERIMENTAL)"
681         depends on SND
682         select SND_PCM
683         help
684           Gadget Audio is compatible with USB Audio Class specification 1.0.
685           It will include at least one AudioControl interface, zero or more
686           AudioStream interface and zero or more MIDIStream interface.
687
688           Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to
689           playback or capture audio stream.
690
691           Say "y" to link the driver statically, or "m" to build a
692           dynamically linked module called "g_audio".
693
694 config USB_ETH
695         tristate "Ethernet Gadget (with CDC Ethernet support)"
696         depends on NET
697         select CRC32
698         help
699           This driver implements Ethernet style communication, in one of
700           several ways:
701           
702            - The "Communication Device Class" (CDC) Ethernet Control Model.
703              That protocol is often avoided with pure Ethernet adapters, in
704              favor of simpler vendor-specific hardware, but is widely
705              supported by firmware for smart network devices.
706
707            - On hardware can't implement that protocol, a simple CDC subset
708              is used, placing fewer demands on USB.
709
710            - CDC Ethernet Emulation Model (EEM) is a newer standard that has
711              a simpler interface that can be used by more USB hardware.
712
713           RNDIS support is an additional option, more demanding than than
714           subset.
715
716           Within the USB device, this gadget driver exposes a network device
717           "usbX", where X depends on what other networking devices you have.
718           Treat it like a two-node Ethernet link:  host, and gadget.
719
720           The Linux-USB host-side "usbnet" driver interoperates with this
721           driver, so that deep I/O queues can be supported.  On 2.4 kernels,
722           use "CDCEther" instead, if you're using the CDC option. That CDC
723           mode should also interoperate with standard CDC Ethernet class
724           drivers on other host operating systems.
725
726           Say "y" to link the driver statically, or "m" to build a
727           dynamically linked module called "g_ether".
728
729 config USB_ETH_RNDIS
730         bool "RNDIS support"
731         depends on USB_ETH
732         default y
733         help
734            Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
735            and Microsoft provides redistributable binary RNDIS drivers for
736            older versions of Windows.
737
738            If you say "y" here, the Ethernet gadget driver will try to provide
739            a second device configuration, supporting RNDIS to talk to such
740            Microsoft USB hosts.
741            
742            To make MS-Windows work with this, use Documentation/usb/linux.inf
743            as the "driver info file".  For versions of MS-Windows older than
744            XP, you'll need to download drivers from Microsoft's website; a URL
745            is given in comments found in that info file.
746
747 config USB_ETH_EEM
748        bool "Ethernet Emulation Model (EEM) support"
749        depends on USB_ETH
750        default n
751        help
752          CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
753          and therefore can be supported by more hardware.  Technically ECM and
754          EEM are designed for different applications.  The ECM model extends
755          the network interface to the target (e.g. a USB cable modem), and the
756          EEM model is for mobile devices to communicate with hosts using
757          ethernet over USB.  For Linux gadgets, however, the interface with
758          the host is the same (a usbX device), so the differences are minimal.
759
760          If you say "y" here, the Ethernet gadget driver will use the EEM
761          protocol rather than ECM.  If unsure, say "n".
762
763 config USB_G_NCM
764         tristate "Network Control Model (NCM) support"
765         depends on NET
766         select CRC32
767         help
768           This driver implements USB CDC NCM subclass standard. NCM is
769           an advanced protocol for Ethernet encapsulation, allows grouping
770           of several ethernet frames into one USB transfer and diffferent
771           alignment possibilities.
772
773           Say "y" to link the driver statically, or "m" to build a
774           dynamically linked module called "g_ncm".
775
776 config USB_GADGETFS
777         tristate "Gadget Filesystem (EXPERIMENTAL)"
778         depends on EXPERIMENTAL
779         help
780           This driver provides a filesystem based API that lets user mode
781           programs implement a single-configuration USB device, including
782           endpoint I/O and control requests that don't relate to enumeration.
783           All endpoints, transfer speeds, and transfer types supported by
784           the hardware are available, through read() and write() calls.
785
786           Currently, this option is still labelled as EXPERIMENTAL because
787           of existing race conditions in the underlying in-kernel AIO core.
788
789           Say "y" to link the driver statically, or "m" to build a
790           dynamically linked module called "gadgetfs".
791
792 config USB_FUNCTIONFS
793         tristate "Function Filesystem (EXPERIMENTAL)"
794         depends on EXPERIMENTAL
795         select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS)
796         help
797           The Function Filesystem (FunctionFS) lets one create USB
798           composite functions in user space in the same way GadgetFS
799           lets one create USB gadgets in user space.  This allows creation
800           of composite gadgets such that some of the functions are
801           implemented in kernel space (for instance Ethernet, serial or
802           mass storage) and other are implemented in user space.
803
804           If you say "y" or "m" here you will be able what kind of
805           configurations the gadget will provide.
806
807           Say "y" to link the driver statically, or "m" to build
808           a dynamically linked module called "g_ffs".
809
810 config USB_FUNCTIONFS_ETH
811         bool "Include configuration with CDC ECM (Ethernet)"
812         depends on USB_FUNCTIONFS && NET
813         help
814           Include a configuration with CDC ECM function (Ethernet) and the
815           Function Filesystem.
816
817 config USB_FUNCTIONFS_RNDIS
818         bool "Include configuration with RNDIS (Ethernet)"
819         depends on USB_FUNCTIONFS && NET
820         help
821           Include a configuration with RNDIS function (Ethernet) and the Filesystem.
822
823 config USB_FUNCTIONFS_GENERIC
824         bool "Include 'pure' configuration"
825         depends on USB_FUNCTIONFS
826         help
827           Include a configuration with the Function Filesystem alone with
828           no Ethernet interface.
829
830 config USB_FILE_STORAGE
831         tristate "File-backed Storage Gadget"
832         depends on BLOCK
833         help
834           The File-backed Storage Gadget acts as a USB Mass Storage
835           disk drive.  As its storage repository it can use a regular
836           file or a block device (in much the same way as the "loop"
837           device driver), specified as a module parameter.
838
839           Say "y" to link the driver statically, or "m" to build a
840           dynamically linked module called "g_file_storage".
841
842 config USB_FILE_STORAGE_TEST
843         bool "File-backed Storage Gadget testing version"
844         depends on USB_FILE_STORAGE
845         default n
846         help
847           Say "y" to generate the larger testing version of the
848           File-backed Storage Gadget, useful for probing the
849           behavior of USB Mass Storage hosts.  Not needed for
850           normal operation.
851
852 config USB_MASS_STORAGE
853         tristate "Mass Storage Gadget"
854         depends on BLOCK
855         help
856           The Mass Storage Gadget acts as a USB Mass Storage disk drive.
857           As its storage repository it can use a regular file or a block
858           device (in much the same way as the "loop" device driver),
859           specified as a module parameter or sysfs option.
860
861           This is heavily based on File-backed Storage Gadget and in most
862           cases you will want to use FSG instead.  This gadget is mostly
863           here to test the functionality of the Mass Storage Function
864           which may be used with composite framework.
865
866           Say "y" to link the driver statically, or "m" to build
867           a dynamically linked module called "g_mass_storage".  If unsure,
868           consider File-backed Storage Gadget.
869
870 config USB_G_SERIAL
871         tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
872         help
873           The Serial Gadget talks to the Linux-USB generic serial driver.
874           This driver supports a CDC-ACM module option, which can be used
875           to interoperate with MS-Windows hosts or with the Linux-USB
876           "cdc-acm" driver.
877
878           This driver also supports a CDC-OBEX option.  You will need a
879           user space OBEX server talking to /dev/ttyGS*, since the kernel
880           itself doesn't implement the OBEX protocol.
881
882           Say "y" to link the driver statically, or "m" to build a
883           dynamically linked module called "g_serial".
884
885           For more information, see Documentation/usb/gadget_serial.txt
886           which includes instructions and a "driver info file" needed to
887           make MS-Windows work with CDC ACM.
888
889 config USB_MIDI_GADGET
890         tristate "MIDI Gadget (EXPERIMENTAL)"
891         depends on SND && EXPERIMENTAL
892         select SND_RAWMIDI
893         help
894           The MIDI Gadget acts as a USB Audio device, with one MIDI
895           input and one MIDI output. These MIDI jacks appear as
896           a sound "card" in the ALSA sound system. Other MIDI
897           connections can then be made on the gadget system, using
898           ALSA's aconnect utility etc.
899
900           Say "y" to link the driver statically, or "m" to build a
901           dynamically linked module called "g_midi".
902
903 config USB_G_PRINTER
904         tristate "Printer Gadget"
905         help
906           The Printer Gadget channels data between the USB host and a
907           userspace program driving the print engine. The user space
908           program reads and writes the device file /dev/g_printer to
909           receive or send printer data. It can use ioctl calls to
910           the device file to get or set printer status.
911
912           Say "y" to link the driver statically, or "m" to build a
913           dynamically linked module called "g_printer".
914
915           For more information, see Documentation/usb/gadget_printer.txt
916           which includes sample code for accessing the device file.
917
918 config USB_CDC_COMPOSITE
919         tristate "CDC Composite Device (Ethernet and ACM)"
920         depends on NET
921         help
922           This driver provides two functions in one configuration:
923           a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
924
925           This driver requires four bulk and two interrupt endpoints,
926           plus the ability to handle altsettings.  Not all peripheral
927           controllers are that capable.
928
929           Say "y" to link the driver statically, or "m" to build a
930           dynamically linked module.
931
932 config USB_G_NOKIA
933         tristate "Nokia composite gadget"
934         depends on PHONET
935         help
936           The Nokia composite gadget provides support for acm, obex
937           and phonet in only one composite gadget driver.
938
939           It's only really useful for N900 hardware. If you're building
940           a kernel for N900, say Y or M here. If unsure, say N.
941
942 config USB_G_MULTI
943         tristate "Multifunction Composite Gadget (EXPERIMENTAL)"
944         depends on BLOCK && NET
945         select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
946         help
947           The Multifunction Composite Gadget provides Ethernet (RNDIS
948           and/or CDC Ethernet), mass storage and ACM serial link
949           interfaces.
950
951           You will be asked to choose which of the two configurations is
952           to be available in the gadget.  At least one configuration must
953           be chosen to make the gadget usable.  Selecting more than one
954           configuration will prevent Windows from automatically detecting
955           the gadget as a composite gadget, so an INF file will be needed to
956           use the gadget.
957
958           Say "y" to link the driver statically, or "m" to build a
959           dynamically linked module called "g_multi".
960
961 config USB_G_MULTI_RNDIS
962         bool "RNDIS + CDC Serial + Storage configuration"
963         depends on USB_G_MULTI
964         default y
965         help
966           This option enables a configuration with RNDIS, CDC Serial and
967           Mass Storage functions available in the Multifunction Composite
968           Gadget.  This is the configuration dedicated for Windows since RNDIS
969           is Microsoft's protocol.
970
971           If unsure, say "y".
972
973 config USB_G_MULTI_CDC
974         bool "CDC Ethernet + CDC Serial + Storage configuration"
975         depends on USB_G_MULTI
976         default n
977         help
978           This option enables a configuration with CDC Ethernet (ECM), CDC
979           Serial and Mass Storage functions available in the Multifunction
980           Composite Gadget.
981
982           If unsure, say "y".
983
984 config USB_G_HID
985         tristate "HID Gadget"
986         help
987           The HID gadget driver provides generic emulation of USB
988           Human Interface Devices (HID).
989
990           For more information, see Documentation/usb/gadget_hid.txt which
991           includes sample code for accessing the device files.
992
993           Say "y" to link the driver statically, or "m" to build a
994           dynamically linked module called "g_hid".
995
996 config USB_G_DBGP
997         tristate "EHCI Debug Device Gadget"
998         help
999           This gadget emulates an EHCI Debug device. This is useful when you want
1000           to interact with an EHCI Debug Port.
1001
1002           Say "y" to link the driver statically, or "m" to build a
1003           dynamically linked module called "g_dbgp".
1004
1005 if USB_G_DBGP
1006 choice
1007         prompt "EHCI Debug Device mode"
1008         default USB_G_DBGP_SERIAL
1009
1010 config USB_G_DBGP_PRINTK
1011         depends on USB_G_DBGP
1012         bool "printk"
1013         help
1014           Directly printk() received data. No interaction.
1015
1016 config USB_G_DBGP_SERIAL
1017         depends on USB_G_DBGP
1018         bool "serial"
1019         help
1020           Userland can interact using /dev/ttyGSxxx.
1021 endchoice
1022 endif
1023
1024 # put drivers that need isochronous transfer support (for audio
1025 # or video class gadget drivers), or specific hardware, here.
1026 config USB_G_WEBCAM
1027         tristate "USB Webcam Gadget"
1028         depends on VIDEO_DEV
1029         help
1030           The Webcam Gadget acts as a composite USB Audio and Video Class
1031           device. It provides a userspace API to process UVC control requests
1032           and stream video data to the host.
1033
1034           Say "y" to link the driver statically, or "m" to build a
1035           dynamically linked module called "g_webcam".
1036
1037 endchoice
1038
1039 endif # USB_GADGET