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