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