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