USB: add platform glue driver for FSL USB DR controller
[pandora-kernel.git] / drivers / usb / gadget / Kconfig
1 #
2 # USB Gadget support on a system involves
3 #    (a) a peripheral controller, and
4 #    (b) the gadget driver using it.
5 #
6 # NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
7 #
8 #  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
9 #  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
10 #  - Some systems have both kinds of controllers.
11 #
12 # With help from a special transceiver and a "Mini-AB" jack, systems with
13 # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
14 #
15
16 menuconfig USB_GADGET
17         tristate "USB Gadget Support"
18         help
19            USB is a master/slave protocol, organized with one master
20            host (such as a PC) controlling up to 127 peripheral devices.
21            The USB hardware is asymmetric, which makes it easier to set up:
22            you can't connect a "to-the-host" connector to a peripheral.
23
24            Linux can run in the host, or in the peripheral.  In both cases
25            you need a low level bus controller driver, and some software
26            talking to it.  Peripheral controllers are often discrete silicon,
27            or are integrated with the CPU in a microcontroller.  The more
28            familiar host side controllers have names like "EHCI", "OHCI",
29            or "UHCI", and are usually integrated into southbridges on PC
30            motherboards.
31
32            Enable this configuration option if you want to run Linux inside
33            a USB peripheral device.  Configure one hardware driver for your
34            peripheral/device side bus controller, and a "gadget driver" for
35            your peripheral protocol.  (If you use modular gadget drivers,
36            you may configure more than one.)
37
38            If in doubt, say "N" and don't enable these drivers; most people
39            don't have this kind of hardware (except maybe inside Linux PDAs).
40
41            For more information, see <http://www.linux-usb.org/gadget> and
42            the kernel DocBook documentation for this API.
43
44 if USB_GADGET
45
46 config USB_GADGET_DEBUG
47         boolean "Debugging messages (DEVELOPMENT)"
48         depends on DEBUG_KERNEL
49         help
50            Many controller and gadget drivers will print some debugging
51            messages if you use this option to ask for those messages.
52
53            Avoid enabling these messages, even if you're actively
54            debugging such a driver.  Many drivers will emit so many
55            messages that the driver timings are affected, which will
56            either create new failure modes or remove the one you're
57            trying to track down.  Never enable these messages for a
58            production build.
59
60 config USB_GADGET_DEBUG_FILES
61         boolean "Debugging information files (DEVELOPMENT)"
62         depends on PROC_FS
63         help
64            Some of the drivers in the "gadget" framework can expose
65            debugging information in files such as /proc/driver/udc
66            (for a peripheral controller).  The information in these
67            files may help when you're troubleshooting or bringing up a
68            driver on a new board.   Enable these files by choosing "Y"
69            here.  If in doubt, or to conserve kernel memory, say "N".
70
71 config USB_GADGET_DEBUG_FS
72         boolean "Debugging information files in debugfs (DEVELOPMENT)"
73         depends on DEBUG_FS
74         help
75            Some of the drivers in the "gadget" framework can expose
76            debugging information in files under /sys/kernel/debug/.
77            The information in these files may help when you're
78            troubleshooting or bringing up a driver on a new board.
79            Enable these files by choosing "Y" here.  If in doubt, or
80            to conserve kernel memory, say "N".
81
82 config USB_GADGET_VBUS_DRAW
83         int "Maximum VBUS Power usage (2-500 mA)"
84         range 2 500
85         default 2
86         help
87            Some devices need to draw power from USB when they are
88            configured, perhaps to operate circuitry or to recharge
89            batteries.  This is in addition to any local power supply,
90            such as an AC adapter or batteries.
91
92            Enter the maximum power your device draws through USB, in
93            milliAmperes.  The permitted range of values is 2 - 500 mA;
94            0 mA would be legal, but can make some hosts misbehave.
95
96            This value will be used except for system-specific gadget
97            drivers that have more specific information.
98
99 config  USB_GADGET_SELECTED
100         boolean
101
102 #
103 # USB Peripheral Controller Support
104 #
105 # The order here is alphabetical, except that integrated controllers go
106 # before discrete ones so they will be the initial/default value:
107 #   - integrated/SOC controllers first
108 #   - licensed IP used in both SOC and discrete versions
109 #   - discrete ones (including all PCI-only controllers)
110 #   - debug/dummy gadget+hcd is last.
111 #
112 choice
113         prompt "USB Peripheral Controller"
114         depends on USB_GADGET
115         help
116            A USB device uses a controller to talk to its host.
117            Systems should have only one such upstream link.
118            Many controller drivers are platform-specific; these
119            often need board-specific hooks.
120
121 #
122 # Integrated controllers
123 #
124
125 config USB_GADGET_AT91
126         boolean "Atmel AT91 USB Device Port"
127         depends on ARCH_AT91 && !ARCH_AT91SAM9RL && !ARCH_AT91CAP9 && !ARCH_AT91SAM9G45
128         select USB_GADGET_SELECTED
129         help
130            Many Atmel AT91 processors (such as the AT91RM2000) have a
131            full speed USB Device Port with support for five configurable
132            endpoints (plus endpoint zero).
133
134            Say "y" to link the driver statically, or "m" to build a
135            dynamically linked module called "at91_udc" and force all
136            gadget drivers to also be dynamically linked.
137
138 config USB_AT91
139         tristate
140         depends on USB_GADGET_AT91
141         default USB_GADGET
142
143 config USB_GADGET_ATMEL_USBA
144         boolean "Atmel USBA"
145         select USB_GADGET_DUALSPEED
146         depends on AVR32 || ARCH_AT91CAP9 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
147         help
148           USBA is the integrated high-speed USB Device controller on
149           the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
150
151 config USB_ATMEL_USBA
152         tristate
153         depends on USB_GADGET_ATMEL_USBA
154         default USB_GADGET
155         select USB_GADGET_SELECTED
156
157 config USB_GADGET_FSL_USB2
158         boolean "Freescale Highspeed USB DR Peripheral Controller"
159         depends on FSL_SOC || ARCH_MXC
160         select USB_GADGET_DUALSPEED
161         select USB_FSL_MPH_DR_OF
162         help
163            Some of Freescale PowerPC processors have a High Speed
164            Dual-Role(DR) USB controller, which supports device mode.
165
166            The number of programmable endpoints is different through
167            SOC revisions.
168
169            Say "y" to link the driver statically, or "m" to build a
170            dynamically linked module called "fsl_usb2_udc" and force
171            all gadget drivers to also be dynamically linked.
172
173 config USB_FSL_USB2
174         tristate
175         depends on USB_GADGET_FSL_USB2
176         default USB_GADGET
177         select USB_GADGET_SELECTED
178
179 config USB_GADGET_LH7A40X
180         boolean "LH7A40X"
181         depends on ARCH_LH7A40X
182         help
183            This driver provides USB Device Controller driver for LH7A40x
184
185 config USB_LH7A40X
186         tristate
187         depends on USB_GADGET_LH7A40X
188         default USB_GADGET
189         select USB_GADGET_SELECTED
190
191 config USB_GADGET_OMAP
192         boolean "OMAP USB Device Controller"
193         depends on ARCH_OMAP
194         select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG
195         select USB_OTG_UTILS if ARCH_OMAP
196         help
197            Many Texas Instruments OMAP processors have flexible full
198            speed USB device controllers, with support for up to 30
199            endpoints (plus endpoint zero).  This driver supports the
200            controller in the OMAP 1611, and should work with controllers
201            in other OMAP processors too, given minor tweaks.
202
203            Say "y" to link the driver statically, or "m" to build a
204            dynamically linked module called "omap_udc" and force all
205            gadget drivers to also be dynamically linked.
206
207 config USB_OMAP
208         tristate
209         depends on USB_GADGET_OMAP
210         default USB_GADGET
211         select USB_GADGET_SELECTED
212
213 config USB_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
510 #
511 # LAST -- dummy/emulated controller
512 #
513
514 config USB_GADGET_DUMMY_HCD
515         boolean "Dummy HCD (DEVELOPMENT)"
516         depends on USB=y || (USB=m && USB_GADGET=m)
517         select USB_GADGET_DUALSPEED
518         help
519           This host controller driver emulates USB, looping all data transfer
520           requests back to a USB "gadget driver" in the same host.  The host
521           side is the master; the gadget side is the slave.  Gadget drivers
522           can be high, full, or low speed; and they have access to endpoints
523           like those from NET2280, PXA2xx, or SA1100 hardware.
524           
525           This may help in some stages of creating a driver to embed in a
526           Linux device, since it lets you debug several parts of the gadget
527           driver without its hardware or drivers being involved.
528           
529           Since such a gadget side driver needs to interoperate with a host
530           side Linux-USB device driver, this may help to debug both sides
531           of a USB protocol stack.
532
533           Say "y" to link the driver statically, or "m" to build a
534           dynamically linked module called "dummy_hcd" and force all
535           gadget drivers to also be dynamically linked.
536
537 config USB_DUMMY_HCD
538         tristate
539         depends on USB_GADGET_DUMMY_HCD
540         default USB_GADGET
541         select USB_GADGET_SELECTED
542
543 # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
544 # first and will be selected by default.
545
546 endchoice
547
548 config USB_GADGET_DUALSPEED
549         bool
550         depends on USB_GADGET
551         default n
552         help
553           Means that gadget drivers should include extra descriptors
554           and code to handle dual-speed controllers.
555
556 #
557 # USB Gadget Drivers
558 #
559 choice
560         tristate "USB Gadget Drivers"
561         depends on USB_GADGET && USB_GADGET_SELECTED
562         default USB_ETH
563         help
564           A Linux "Gadget Driver" talks to the USB Peripheral Controller
565           driver through the abstract "gadget" API.  Some other operating
566           systems call these "client" drivers, of which "class drivers"
567           are a subset (implementing a USB device class specification).
568           A gadget driver implements one or more USB functions using
569           the peripheral hardware.
570
571           Gadget drivers are hardware-neutral, or "platform independent",
572           except that they sometimes must understand quirks or limitations
573           of the particular controllers they work with.  For example, when
574           a controller doesn't support alternate configurations or provide
575           enough of the right types of endpoints, the gadget driver might
576           not be able work with that controller, or might need to implement
577           a less common variant of a device class protocol.
578
579 # this first set of drivers all depend on bulk-capable hardware.
580
581 config USB_ZERO
582         tristate "Gadget Zero (DEVELOPMENT)"
583         help
584           Gadget Zero is a two-configuration device.  It either sinks and
585           sources bulk data; or it loops back a configurable number of
586           transfers.  It also implements control requests, for "chapter 9"
587           conformance.  The driver needs only two bulk-capable endpoints, so
588           it can work on top of most device-side usb controllers.  It's
589           useful for testing, and is also a working example showing how
590           USB "gadget drivers" can be written.
591
592           Make this be the first driver you try using on top of any new
593           USB peripheral controller driver.  Then you can use host-side
594           test software, like the "usbtest" driver, to put your hardware
595           and its driver through a basic set of functional tests.
596
597           Gadget Zero also works with the host-side "usb-skeleton" driver,
598           and with many kinds of host-side test software.  You may need
599           to tweak product and vendor IDs before host software knows about
600           this device, and arrange to select an appropriate configuration.
601
602           Say "y" to link the driver statically, or "m" to build a
603           dynamically linked module called "g_zero".
604
605 config USB_ZERO_HNPTEST
606         boolean "HNP Test Device"
607         depends on USB_ZERO && USB_OTG
608         help
609           You can configure this device to enumerate using the device
610           identifiers of the USB-OTG test device.  That means that when
611           this gadget connects to another OTG device, with this one using
612           the "B-Peripheral" role, that device will use HNP to let this
613           one serve as the USB host instead (in the "B-Host" role).
614
615 config USB_AUDIO
616         tristate "Audio Gadget (EXPERIMENTAL)"
617         depends on SND
618         select SND_PCM
619         help
620           Gadget Audio is compatible with USB Audio Class specification 1.0.
621           It will include at least one AudioControl interface, zero or more
622           AudioStream interface and zero or more MIDIStream interface.
623
624           Gadget Audio will use on-board ALSA (CONFIG_SND) audio card to
625           playback or capture audio stream.
626
627           Say "y" to link the driver statically, or "m" to build a
628           dynamically linked module called "g_audio".
629
630 config USB_ETH
631         tristate "Ethernet Gadget (with CDC Ethernet support)"
632         depends on NET
633         select CRC32
634         help
635           This driver implements Ethernet style communication, in one of
636           several ways:
637           
638            - The "Communication Device Class" (CDC) Ethernet Control Model.
639              That protocol is often avoided with pure Ethernet adapters, in
640              favor of simpler vendor-specific hardware, but is widely
641              supported by firmware for smart network devices.
642
643            - On hardware can't implement that protocol, a simple CDC subset
644              is used, placing fewer demands on USB.
645
646            - CDC Ethernet Emulation Model (EEM) is a newer standard that has
647              a simpler interface that can be used by more USB hardware.
648
649           RNDIS support is an additional option, more demanding than than
650           subset.
651
652           Within the USB device, this gadget driver exposes a network device
653           "usbX", where X depends on what other networking devices you have.
654           Treat it like a two-node Ethernet link:  host, and gadget.
655
656           The Linux-USB host-side "usbnet" driver interoperates with this
657           driver, so that deep I/O queues can be supported.  On 2.4 kernels,
658           use "CDCEther" instead, if you're using the CDC option. That CDC
659           mode should also interoperate with standard CDC Ethernet class
660           drivers on other host operating systems.
661
662           Say "y" to link the driver statically, or "m" to build a
663           dynamically linked module called "g_ether".
664
665 config USB_ETH_RNDIS
666         bool "RNDIS support"
667         depends on USB_ETH
668         default y
669         help
670            Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
671            and Microsoft provides redistributable binary RNDIS drivers for
672            older versions of Windows.
673
674            If you say "y" here, the Ethernet gadget driver will try to provide
675            a second device configuration, supporting RNDIS to talk to such
676            Microsoft USB hosts.
677            
678            To make MS-Windows work with this, use Documentation/usb/linux.inf
679            as the "driver info file".  For versions of MS-Windows older than
680            XP, you'll need to download drivers from Microsoft's website; a URL
681            is given in comments found in that info file.
682
683 config USB_ETH_EEM
684        bool "Ethernet Emulation Model (EEM) support"
685        depends on USB_ETH
686        default n
687        help
688          CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
689          and therefore can be supported by more hardware.  Technically ECM and
690          EEM are designed for different applications.  The ECM model extends
691          the network interface to the target (e.g. a USB cable modem), and the
692          EEM model is for mobile devices to communicate with hosts using
693          ethernet over USB.  For Linux gadgets, however, the interface with
694          the host is the same (a usbX device), so the differences are minimal.
695
696          If you say "y" here, the Ethernet gadget driver will use the EEM
697          protocol rather than ECM.  If unsure, say "n".
698
699 config USB_GADGETFS
700         tristate "Gadget Filesystem (EXPERIMENTAL)"
701         depends on EXPERIMENTAL
702         help
703           This driver provides a filesystem based API that lets user mode
704           programs implement a single-configuration USB device, including
705           endpoint I/O and control requests that don't relate to enumeration.
706           All endpoints, transfer speeds, and transfer types supported by
707           the hardware are available, through read() and write() calls.
708
709           Currently, this option is still labelled as EXPERIMENTAL because
710           of existing race conditions in the underlying in-kernel AIO core.
711
712           Say "y" to link the driver statically, or "m" to build a
713           dynamically linked module called "gadgetfs".
714
715 config USB_FUNCTIONFS
716         tristate "Function Filesystem (EXPERIMENTAL)"
717         depends on EXPERIMENTAL
718         select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS)
719         help
720           The Function Filesystem (FunctionFS) lets one create USB
721           composite functions in user space in the same way GadgetFS
722           lets one create USB gadgets in user space.  This allows creation
723           of composite gadgets such that some of the functions are
724           implemented in kernel space (for instance Ethernet, serial or
725           mass storage) and other are implemented in user space.
726
727           If you say "y" or "m" here you will be able what kind of
728           configurations the gadget will provide.
729
730           Say "y" to link the driver statically, or "m" to build
731           a dynamically linked module called "g_ffs".
732
733 config USB_FUNCTIONFS_ETH
734         bool "Include configuration with CDC ECM (Ethernet)"
735         depends on USB_FUNCTIONFS && NET
736         help
737           Include a configuration with CDC ECM function (Ethernet) and the
738           Function Filesystem.
739
740 config USB_FUNCTIONFS_RNDIS
741         bool "Include configuration with RNDIS (Ethernet)"
742         depends on USB_FUNCTIONFS && NET
743         help
744           Include a configuration with RNDIS function (Ethernet) and the Filesystem.
745
746 config USB_FUNCTIONFS_GENERIC
747         bool "Include 'pure' configuration"
748         depends on USB_FUNCTIONFS
749         help
750           Include a configuration with the Function Filesystem alone with
751           no Ethernet interface.
752
753 config USB_FILE_STORAGE
754         tristate "File-backed Storage Gadget"
755         depends on BLOCK
756         help
757           The File-backed Storage Gadget acts as a USB Mass Storage
758           disk drive.  As its storage repository it can use a regular
759           file or a block device (in much the same way as the "loop"
760           device driver), specified as a module parameter.
761
762           Say "y" to link the driver statically, or "m" to build a
763           dynamically linked module called "g_file_storage".
764
765 config USB_FILE_STORAGE_TEST
766         bool "File-backed Storage Gadget testing version"
767         depends on USB_FILE_STORAGE
768         default n
769         help
770           Say "y" to generate the larger testing version of the
771           File-backed Storage Gadget, useful for probing the
772           behavior of USB Mass Storage hosts.  Not needed for
773           normal operation.
774
775 config USB_MASS_STORAGE
776         tristate "Mass Storage Gadget"
777         depends on BLOCK
778         help
779           The Mass Storage Gadget acts as a USB Mass Storage disk drive.
780           As its storage repository it can use a regular file or a block
781           device (in much the same way as the "loop" device driver),
782           specified as a module parameter or sysfs option.
783
784           This is heavily based on File-backed Storage Gadget and in most
785           cases you will want to use FSG instead.  This gadget is mostly
786           here to test the functionality of the Mass Storage Function
787           which may be used with composite framework.
788
789           Say "y" to link the driver statically, or "m" to build
790           a dynamically linked module called "g_mass_storage".  If unsure,
791           consider File-backed Storage Gadget.
792
793 config USB_G_SERIAL
794         tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
795         help
796           The Serial Gadget talks to the Linux-USB generic serial driver.
797           This driver supports a CDC-ACM module option, which can be used
798           to interoperate with MS-Windows hosts or with the Linux-USB
799           "cdc-acm" driver.
800
801           This driver also supports a CDC-OBEX option.  You will need a
802           user space OBEX server talking to /dev/ttyGS*, since the kernel
803           itself doesn't implement the OBEX protocol.
804
805           Say "y" to link the driver statically, or "m" to build a
806           dynamically linked module called "g_serial".
807
808           For more information, see Documentation/usb/gadget_serial.txt
809           which includes instructions and a "driver info file" needed to
810           make MS-Windows work with CDC ACM.
811
812 config USB_MIDI_GADGET
813         tristate "MIDI Gadget (EXPERIMENTAL)"
814         depends on SND && EXPERIMENTAL
815         select SND_RAWMIDI
816         help
817           The MIDI Gadget acts as a USB Audio device, with one MIDI
818           input and one MIDI output. These MIDI jacks appear as
819           a sound "card" in the ALSA sound system. Other MIDI
820           connections can then be made on the gadget system, using
821           ALSA's aconnect utility etc.
822
823           Say "y" to link the driver statically, or "m" to build a
824           dynamically linked module called "g_midi".
825
826 config USB_G_PRINTER
827         tristate "Printer Gadget"
828         help
829           The Printer Gadget channels data between the USB host and a
830           userspace program driving the print engine. The user space
831           program reads and writes the device file /dev/g_printer to
832           receive or send printer data. It can use ioctl calls to
833           the device file to get or set printer status.
834
835           Say "y" to link the driver statically, or "m" to build a
836           dynamically linked module called "g_printer".
837
838           For more information, see Documentation/usb/gadget_printer.txt
839           which includes sample code for accessing the device file.
840
841 config USB_CDC_COMPOSITE
842         tristate "CDC Composite Device (Ethernet and ACM)"
843         depends on NET
844         help
845           This driver provides two functions in one configuration:
846           a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
847
848           This driver requires four bulk and two interrupt endpoints,
849           plus the ability to handle altsettings.  Not all peripheral
850           controllers are that capable.
851
852           Say "y" to link the driver statically, or "m" to build a
853           dynamically linked module.
854
855 config USB_G_NOKIA
856         tristate "Nokia composite gadget"
857         depends on PHONET
858         help
859           The Nokia composite gadget provides support for acm, obex
860           and phonet in only one composite gadget driver.
861
862           It's only really useful for N900 hardware. If you're building
863           a kernel for N900, say Y or M here. If unsure, say N.
864
865 config USB_G_MULTI
866         tristate "Multifunction Composite Gadget (EXPERIMENTAL)"
867         depends on BLOCK && NET
868         select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
869         help
870           The Multifunction Composite Gadget provides Ethernet (RNDIS
871           and/or CDC Ethernet), mass storage and ACM serial link
872           interfaces.
873
874           You will be asked to choose which of the two configurations is
875           to be available in the gadget.  At least one configuration must
876           be chosen to make the gadget usable.  Selecting more than one
877           configuration will prevent Windows from automatically detecting
878           the gadget as a composite gadget, so an INF file will be needed to
879           use the gadget.
880
881           Say "y" to link the driver statically, or "m" to build a
882           dynamically linked module called "g_multi".
883
884 config USB_G_MULTI_RNDIS
885         bool "RNDIS + CDC Serial + Storage configuration"
886         depends on USB_G_MULTI
887         default y
888         help
889           This option enables a configuration with RNDIS, CDC Serial and
890           Mass Storage functions available in the Multifunction Composite
891           Gadget.  This is the configuration dedicated for Windows since RNDIS
892           is Microsoft's protocol.
893
894           If unsure, say "y".
895
896 config USB_G_MULTI_CDC
897         bool "CDC Ethernet + CDC Serial + Storage configuration"
898         depends on USB_G_MULTI
899         default n
900         help
901           This option enables a configuration with CDC Ethernet (ECM), CDC
902           Serial and Mass Storage functions available in the Multifunction
903           Composite Gadget.
904
905           If unsure, say "y".
906
907 config USB_G_HID
908         tristate "HID Gadget"
909         help
910           The HID gadget driver provides generic emulation of USB
911           Human Interface Devices (HID).
912
913           For more information, see Documentation/usb/gadget_hid.txt which
914           includes sample code for accessing the device files.
915
916           Say "y" to link the driver statically, or "m" to build a
917           dynamically linked module called "g_hid".
918
919 config USB_G_DBGP
920         tristate "EHCI Debug Device Gadget"
921         help
922           This gadget emulates an EHCI Debug device. This is useful when you want
923           to interact with an EHCI Debug Port.
924
925           Say "y" to link the driver statically, or "m" to build a
926           dynamically linked module called "g_dbgp".
927
928 if USB_G_DBGP
929 choice
930         prompt "EHCI Debug Device mode"
931         default USB_G_DBGP_SERIAL
932
933 config USB_G_DBGP_PRINTK
934         depends on USB_G_DBGP
935         bool "printk"
936         help
937           Directly printk() received data. No interaction.
938
939 config USB_G_DBGP_SERIAL
940         depends on USB_G_DBGP
941         bool "serial"
942         help
943           Userland can interact using /dev/ttyGSxxx.
944 endchoice
945 endif
946
947 # put drivers that need isochronous transfer support (for audio
948 # or video class gadget drivers), or specific hardware, here.
949 config USB_G_WEBCAM
950         tristate "USB Webcam Gadget"
951         depends on VIDEO_DEV
952         help
953           The Webcam Gadget acts as a composite USB Audio and Video Class
954           device. It provides a userspace API to process UVC control requests
955           and stream video data to the host.
956
957           Say "y" to link the driver statically, or "m" to build a
958           dynamically linked module called "g_webcam".
959
960 endchoice
961
962 endif # USB_GADGET