usb: phy: make PHY driver selection possible by controller drivers
[profile/ivi/kernel-x86-ivi.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 menu "USB Peripheral Controller"
127
128 #
129 # Integrated controllers
130 #
131
132 config USB_AT91
133         tristate "Atmel AT91 USB Device Port"
134         depends on ARCH_AT91
135         help
136            Many Atmel AT91 processors (such as the AT91RM2000) have a
137            full speed USB Device Port with support for five configurable
138            endpoints (plus endpoint zero).
139
140            Say "y" to link the driver statically, or "m" to build a
141            dynamically linked module called "at91_udc" and force all
142            gadget drivers to also be dynamically linked.
143
144 config USB_LPC32XX
145         tristate "LPC32XX USB Peripheral Controller"
146         depends on ARCH_LPC32XX
147         select USB_ISP1301
148         help
149            This option selects the USB device controller in the LPC32xx SoC.
150
151            Say "y" to link the driver statically, or "m" to build a
152            dynamically linked module called "lpc32xx_udc" and force all
153            gadget drivers to also be dynamically linked.
154
155 config USB_ATMEL_USBA
156         tristate "Atmel USBA"
157         depends on AVR32 || ARCH_AT91
158         help
159           USBA is the integrated high-speed USB Device controller on
160           the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
161
162 config USB_BCM63XX_UDC
163         tristate "Broadcom BCM63xx Peripheral Controller"
164         depends on BCM63XX
165         help
166            Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
167            high speed USB Device Port with support for four fixed endpoints
168            (plus endpoint zero).
169
170            Say "y" to link the driver statically, or "m" to build a
171            dynamically linked module called "bcm63xx_udc".
172
173 config USB_FSL_USB2
174         tristate "Freescale Highspeed USB DR Peripheral Controller"
175         depends on FSL_SOC || ARCH_MXC
176         select USB_FSL_MPH_DR_OF if OF
177         help
178            Some of Freescale PowerPC and i.MX processors have a High Speed
179            Dual-Role(DR) USB controller, which supports device mode.
180
181            The number of programmable endpoints is different through
182            SOC revisions.
183
184            Say "y" to link the driver statically, or "m" to build a
185            dynamically linked module called "fsl_usb2_udc" and force
186            all gadget drivers to also be dynamically linked.
187
188 config USB_FUSB300
189         tristate "Faraday FUSB300 USB Peripheral Controller"
190         depends on !PHYS_ADDR_T_64BIT
191         help
192            Faraday usb device controller FUSB300 driver
193
194 config USB_FOTG210_UDC
195         depends on HAS_DMA
196         tristate "Faraday FOTG210 USB Peripheral Controller"
197         help
198            Faraday USB2.0 OTG controller which can be configured as
199            high speed or full speed USB device. This driver supppors
200            Bulk Transfer so far.
201
202            Say "y" to link the driver statically, or "m" to build a
203            dynamically linked module called "fotg210_udc".
204
205 config USB_OMAP
206         tristate "OMAP USB Device Controller"
207         depends on ARCH_OMAP1
208         select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG
209         help
210            Many Texas Instruments OMAP processors have flexible full
211            speed USB device controllers, with support for up to 30
212            endpoints (plus endpoint zero).  This driver supports the
213            controller in the OMAP 1611, and should work with controllers
214            in other OMAP processors too, given minor tweaks.
215
216            Say "y" to link the driver statically, or "m" to build a
217            dynamically linked module called "omap_udc" and force all
218            gadget drivers to also be dynamically linked.
219
220 config USB_PXA25X
221         tristate "PXA 25x or IXP 4xx"
222         depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
223         help
224            Intel's PXA 25x series XScale ARM-5TE processors include
225            an integrated full speed USB 1.1 device controller.  The
226            controller in the IXP 4xx series is register-compatible.
227
228            It has fifteen fixed-function endpoints, as well as endpoint
229            zero (for control transfers).
230
231            Say "y" to link the driver statically, or "m" to build a
232            dynamically linked module called "pxa25x_udc" and force all
233            gadget drivers to also be dynamically linked.
234
235 # if there's only one gadget driver, using only two bulk endpoints,
236 # don't waste memory for the other endpoints
237 config USB_PXA25X_SMALL
238         depends on USB_PXA25X
239         bool
240         default n if USB_ETH_RNDIS
241         default y if USB_ZERO
242         default y if USB_ETH
243         default y if USB_G_SERIAL
244
245 config USB_R8A66597
246         tristate "Renesas R8A66597 USB Peripheral Controller"
247         help
248            R8A66597 is a discrete USB host and peripheral controller chip that
249            supports both full and high speed USB 2.0 data transfers.
250            It has nine configurable endpoints, and endpoint zero.
251
252            Say "y" to link the driver statically, or "m" to build a
253            dynamically linked module called "r8a66597_udc" and force all
254            gadget drivers to also be dynamically linked.
255
256 config USB_RENESAS_USBHS_UDC
257         tristate 'Renesas USBHS controller'
258         depends on USB_RENESAS_USBHS
259         help
260            Renesas USBHS is a discrete USB host and peripheral controller chip
261            that supports both full and high speed USB 2.0 data transfers.
262            It has nine or more configurable endpoints, and endpoint zero.
263
264            Say "y" to link the driver statically, or "m" to build a
265            dynamically linked module called "renesas_usbhs" and force all
266            gadget drivers to also be dynamically linked.
267
268 config USB_PXA27X
269         tristate "PXA 27x"
270         help
271            Intel's PXA 27x series XScale ARM v5TE processors include
272            an integrated full speed USB 1.1 device controller.
273
274            It has up to 23 endpoints, as well as endpoint zero (for
275            control transfers).
276
277            Say "y" to link the driver statically, or "m" to build a
278            dynamically linked module called "pxa27x_udc" and force all
279            gadget drivers to also be dynamically linked.
280
281 config USB_S3C_HSOTG
282         tristate "S3C HS/OtG USB Device controller"
283         depends on S3C_DEV_USB_HSOTG
284         help
285           The Samsung S3C64XX USB2.0 high-speed gadget controller
286           integrated into the S3C64XX series SoC.
287
288 config USB_S3C2410
289         tristate "S3C2410 USB Device Controller"
290         depends on ARCH_S3C24XX
291         help
292           Samsung's S3C2410 is an ARM-4 processor with an integrated
293           full speed USB 1.1 device controller.  It has 4 configurable
294           endpoints, as well as endpoint zero (for control transfers).
295
296           This driver has been tested on the S3C2410, S3C2412, and
297           S3C2440 processors.
298
299 config USB_S3C2410_DEBUG
300         boolean "S3C2410 udc debug messages"
301         depends on USB_S3C2410
302
303 config USB_S3C_HSUDC
304         tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
305         depends on ARCH_S3C24XX
306         help
307           Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
308           integrated with dual speed USB 2.0 device controller. It has
309           8 endpoints, as well as endpoint zero.
310
311           This driver has been tested on S3C2416 and S3C2450 processors.
312
313 config USB_MV_UDC
314         tristate "Marvell USB2.0 Device Controller"
315         depends on GENERIC_HARDIRQS && HAS_DMA
316         help
317           Marvell Socs (including PXA and MMP series) include a high speed
318           USB2.0 OTG controller, which can be configured as high speed or
319           full speed USB peripheral.
320
321 config USB_MV_U3D
322         depends on HAS_DMA
323         tristate "MARVELL PXA2128 USB 3.0 controller"
324         help
325           MARVELL PXA2128 Processor series include a super speed USB3.0 device
326           controller, which support super speed USB peripheral.
327
328 #
329 # Controllers available in both integrated and discrete versions
330 #
331
332 config USB_M66592
333         tristate "Renesas M66592 USB Peripheral Controller"
334         help
335            M66592 is a discrete USB peripheral controller chip that
336            supports both full and high speed USB 2.0 data transfers.
337            It has seven configurable endpoints, and endpoint zero.
338
339            Say "y" to link the driver statically, or "m" to build a
340            dynamically linked module called "m66592_udc" and force all
341            gadget drivers to also be dynamically linked.
342
343 #
344 # Controllers available only in discrete form (and all PCI controllers)
345 #
346
347 config USB_AMD5536UDC
348         tristate "AMD5536 UDC"
349         depends on PCI
350         help
351            The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
352            It is a USB Highspeed DMA capable USB device controller. Beside ep0
353            it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
354            The UDC port supports OTG operation, and may be used as a host port
355            if it's not being used to implement peripheral or OTG roles.
356
357            Say "y" to link the driver statically, or "m" to build a
358            dynamically linked module called "amd5536udc" and force all
359            gadget drivers to also be dynamically linked.
360
361 config USB_FSL_QE
362         tristate "Freescale QE/CPM USB Device Controller"
363         depends on FSL_SOC && (QUICC_ENGINE || CPM)
364         help
365            Some of Freescale PowerPC processors have a Full Speed
366            QE/CPM2 USB controller, which support device mode with 4
367            programmable endpoints. This driver supports the
368            controller in the MPC8360 and MPC8272, and should work with
369            controllers having QE or CPM2, given minor tweaks.
370
371            Set CONFIG_USB_GADGET to "m" to build this driver as a
372            dynamically linked module called "fsl_qe_udc".
373
374 config USB_NET2272
375         tristate "PLX NET2272"
376         help
377           PLX NET2272 is a USB peripheral controller which supports
378           both full and high speed USB 2.0 data transfers.
379
380           It has three configurable endpoints, as well as endpoint zero
381           (for control transfer).
382           Say "y" to link the driver statically, or "m" to build a
383           dynamically linked module called "net2272" and force all
384           gadget drivers to also be dynamically linked.
385
386 config USB_NET2272_DMA
387         boolean "Support external DMA controller"
388         depends on USB_NET2272
389         help
390           The NET2272 part can optionally support an external DMA
391           controller, but your board has to have support in the
392           driver itself.
393
394           If unsure, say "N" here.  The driver works fine in PIO mode.
395
396 config USB_NET2280
397         tristate "NetChip 228x"
398         depends on PCI
399         help
400            NetChip 2280 / 2282 is a PCI based USB peripheral controller which
401            supports both full and high speed USB 2.0 data transfers.
402
403            It has six configurable endpoints, as well as endpoint zero
404            (for control transfers) and several endpoints with dedicated
405            functions.
406
407            Say "y" to link the driver statically, or "m" to build a
408            dynamically linked module called "net2280" and force all
409            gadget drivers to also be dynamically linked.
410
411 config USB_GOKU
412         tristate "Toshiba TC86C001 'Goku-S'"
413         depends on PCI
414         help
415            The Toshiba TC86C001 is a PCI device which includes controllers
416            for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
417
418            The device controller has three configurable (bulk or interrupt)
419            endpoints, plus endpoint zero (for control transfers).
420
421            Say "y" to link the driver statically, or "m" to build a
422            dynamically linked module called "goku_udc" and to force all
423            gadget drivers to also be dynamically linked.
424
425 config USB_EG20T
426         tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
427         depends on PCI && GENERIC_HARDIRQS
428         help
429           This is a USB device driver for EG20T PCH.
430           EG20T PCH is the platform controller hub that is used in Intel's
431           general embedded platform. EG20T PCH has USB device interface.
432           Using this interface, it is able to access system devices connected
433           to USB device.
434           This driver enables USB device function.
435           USB device is a USB peripheral controller which
436           supports both full and high speed USB 2.0 data transfers.
437           This driver supports both control transfer and bulk transfer modes.
438           This driver dose not support interrupt transfer or isochronous
439           transfer modes.
440
441           This driver also can be used for LAPIS Semiconductor's ML7213 which is
442           for IVI(In-Vehicle Infotainment) use.
443           ML7831 is for general purpose use.
444           ML7213/ML7831 is companion chip for Intel Atom E6xx series.
445           ML7213/ML7831 is completely compatible for Intel EG20T PCH.
446
447 #
448 # LAST -- dummy/emulated controller
449 #
450
451 config USB_DUMMY_HCD
452         tristate "Dummy HCD (DEVELOPMENT)"
453         depends on USB=y || (USB=m && USB_GADGET=m)
454         help
455           This host controller driver emulates USB, looping all data transfer
456           requests back to a USB "gadget driver" in the same host.  The host
457           side is the master; the gadget side is the slave.  Gadget drivers
458           can be high, full, or low speed; and they have access to endpoints
459           like those from NET2280, PXA2xx, or SA1100 hardware.
460
461           This may help in some stages of creating a driver to embed in a
462           Linux device, since it lets you debug several parts of the gadget
463           driver without its hardware or drivers being involved.
464
465           Since such a gadget side driver needs to interoperate with a host
466           side Linux-USB device driver, this may help to debug both sides
467           of a USB protocol stack.
468
469           Say "y" to link the driver statically, or "m" to build a
470           dynamically linked module called "dummy_hcd" and force all
471           gadget drivers to also be dynamically linked.
472
473 # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
474 # first and will be selected by default.
475
476 endmenu
477
478 #
479 # USB Gadget Drivers
480 #
481
482 # composite based drivers
483 config USB_LIBCOMPOSITE
484         tristate
485         select CONFIGFS_FS
486         depends on USB_GADGET
487
488 config USB_F_ACM
489         tristate
490
491 config USB_F_SS_LB
492         tristate
493
494 config USB_U_SERIAL
495         tristate
496
497 config USB_U_ETHER
498         tristate
499
500 config USB_U_RNDIS
501         tristate
502
503 config USB_F_SERIAL
504         tristate
505
506 config USB_F_OBEX
507         tristate
508
509 config USB_F_NCM
510         tristate
511
512 config USB_F_ECM
513         tristate
514
515 config USB_F_PHONET
516         tristate
517
518 config USB_F_EEM
519         tristate
520
521 config USB_F_SUBSET
522         tristate
523
524 config USB_F_RNDIS
525         tristate
526
527 choice
528         tristate "USB Gadget Drivers"
529         default USB_ETH
530         help
531           A Linux "Gadget Driver" talks to the USB Peripheral Controller
532           driver through the abstract "gadget" API.  Some other operating
533           systems call these "client" drivers, of which "class drivers"
534           are a subset (implementing a USB device class specification).
535           A gadget driver implements one or more USB functions using
536           the peripheral hardware.
537
538           Gadget drivers are hardware-neutral, or "platform independent",
539           except that they sometimes must understand quirks or limitations
540           of the particular controllers they work with.  For example, when
541           a controller doesn't support alternate configurations or provide
542           enough of the right types of endpoints, the gadget driver might
543           not be able work with that controller, or might need to implement
544           a less common variant of a device class protocol.
545
546 # this first set of drivers all depend on bulk-capable hardware.
547
548 config USB_CONFIGFS
549         tristate "USB functions configurable through configfs"
550         select USB_LIBCOMPOSITE
551         help
552           A Linux USB "gadget" can be set up through configfs.
553           If this is the case, the USB functions (which from the host's
554           perspective are seen as interfaces) and configurations are
555           specified simply by creating appropriate directories in configfs.
556           Associating functions with configurations is done by creating
557           appropriate symbolic links.
558           For more information see Documentation/usb/gadget-configfs.txt.
559
560 config USB_CONFIGFS_SERIAL
561         boolean "Generic serial bulk in/out"
562         depends on USB_CONFIGFS
563         depends on TTY
564         select USB_U_SERIAL
565         select USB_F_SERIAL
566         help
567           The function talks to the Linux-USB generic serial driver.
568
569 config USB_CONFIGFS_ACM
570         boolean "Abstract Control Model (CDC ACM)"
571         depends on USB_CONFIGFS
572         depends on TTY
573         select USB_U_SERIAL
574         select USB_F_ACM
575         help
576           ACM serial link.  This function can be used to interoperate with
577           MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
578
579 config USB_CONFIGFS_OBEX
580         boolean "Object Exchange Model (CDC OBEX)"
581         depends on USB_CONFIGFS
582         depends on TTY
583         select USB_U_SERIAL
584         select USB_F_OBEX
585         help
586           You will need a user space OBEX server talking to /dev/ttyGS*,
587           since the kernel itself doesn't implement the OBEX protocol.
588
589 config USB_CONFIGFS_NCM
590         boolean "Network Control Model (CDC NCM)"
591         depends on USB_CONFIGFS
592         depends on NET
593         select USB_U_ETHER
594         select USB_F_NCM
595         help
596           NCM is an advanced protocol for Ethernet encapsulation, allows
597           grouping of several ethernet frames into one USB transfer and
598           different alignment possibilities.
599
600 config USB_CONFIGFS_ECM
601         boolean "Ethernet Control Model (CDC ECM)"
602         depends on USB_CONFIGFS
603         depends on NET
604         select USB_U_ETHER
605         select USB_F_ECM
606         help
607           The "Communication Device Class" (CDC) Ethernet Control Model.
608           That protocol is often avoided with pure Ethernet adapters, in
609           favor of simpler vendor-specific hardware, but is widely
610           supported by firmware for smart network devices.
611
612 config USB_CONFIGFS_ECM_SUBSET
613         boolean "Ethernet Control Model (CDC ECM) subset"
614         depends on USB_CONFIGFS
615         depends on NET
616         select USB_U_ETHER
617         select USB_F_SUBSET
618         help
619           On hardware that can't implement the full protocol,
620           a simple CDC subset is used, placing fewer demands on USB.
621
622 config USB_CONFIGFS_RNDIS
623         bool "RNDIS"
624         depends on USB_CONFIGFS
625         depends on NET
626         select USB_U_ETHER
627         select USB_U_RNDIS
628         select USB_F_RNDIS
629         help
630            Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
631            and Microsoft provides redistributable binary RNDIS drivers for
632            older versions of Windows.
633
634            To make MS-Windows work with this, use Documentation/usb/linux.inf
635            as the "driver info file".  For versions of MS-Windows older than
636            XP, you'll need to download drivers from Microsoft's website; a URL
637            is given in comments found in that info file.
638
639 config USB_CONFIGFS_EEM
640         bool "Ethernet Emulation Model (EEM)"
641         depends on USB_CONFIGFS
642         depends on NET
643         select USB_U_ETHER
644         select USB_F_EEM
645         help
646           CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
647           and therefore can be supported by more hardware.  Technically ECM and
648           EEM are designed for different applications.  The ECM model extends
649           the network interface to the target (e.g. a USB cable modem), and the
650           EEM model is for mobile devices to communicate with hosts using
651           ethernet over USB.  For Linux gadgets, however, the interface with
652           the host is the same (a usbX device), so the differences are minimal.
653
654 config USB_CONFIGFS_PHONET
655         boolean "Phonet protocol"
656         depends on USB_CONFIGFS
657         depends on NET
658         depends on PHONET
659         select USB_U_ETHER
660         select USB_F_PHONET
661         help
662           The Phonet protocol implementation for USB device.
663
664 config USB_ZERO
665         tristate "Gadget Zero (DEVELOPMENT)"
666         select USB_LIBCOMPOSITE
667         select USB_F_SS_LB
668         help
669           Gadget Zero is a two-configuration device.  It either sinks and
670           sources bulk data; or it loops back a configurable number of
671           transfers.  It also implements control requests, for "chapter 9"
672           conformance.  The driver needs only two bulk-capable endpoints, so
673           it can work on top of most device-side usb controllers.  It's
674           useful for testing, and is also a working example showing how
675           USB "gadget drivers" can be written.
676
677           Make this be the first driver you try using on top of any new
678           USB peripheral controller driver.  Then you can use host-side
679           test software, like the "usbtest" driver, to put your hardware
680           and its driver through a basic set of functional tests.
681
682           Gadget Zero also works with the host-side "usb-skeleton" driver,
683           and with many kinds of host-side test software.  You may need
684           to tweak product and vendor IDs before host software knows about
685           this device, and arrange to select an appropriate configuration.
686
687           Say "y" to link the driver statically, or "m" to build a
688           dynamically linked module called "g_zero".
689
690 config USB_ZERO_HNPTEST
691         boolean "HNP Test Device"
692         depends on USB_ZERO && USB_OTG
693         help
694           You can configure this device to enumerate using the device
695           identifiers of the USB-OTG test device.  That means that when
696           this gadget connects to another OTG device, with this one using
697           the "B-Peripheral" role, that device will use HNP to let this
698           one serve as the USB host instead (in the "B-Host" role).
699
700 config USB_AUDIO
701         tristate "Audio Gadget"
702         depends on SND
703         select USB_LIBCOMPOSITE
704         select SND_PCM
705         help
706           This Gadget Audio driver is compatible with USB Audio Class
707           specification 2.0. It implements 1 AudioControl interface,
708           1 AudioStreaming Interface each for USB-OUT and USB-IN.
709           Number of channels, sample rate and sample size can be
710           specified as module parameters.
711           This driver doesn't expect any real Audio codec to be present
712           on the device - the audio streams are simply sinked to and
713           sourced from a virtual ALSA sound card created. The user-space
714           application may choose to do whatever it wants with the data
715           received from the USB Host and choose to provide whatever it
716           wants as audio data to the USB Host.
717
718           Say "y" to link the driver statically, or "m" to build a
719           dynamically linked module called "g_audio".
720
721 config GADGET_UAC1
722         bool "UAC 1.0 (Legacy)"
723         depends on USB_AUDIO
724         help
725           If you instead want older UAC Spec-1.0 driver that also has audio
726           paths hardwired to the Audio codec chip on-board and doesn't work
727           without one.
728
729 config USB_ETH
730         tristate "Ethernet Gadget (with CDC Ethernet support)"
731         depends on NET
732         select USB_LIBCOMPOSITE
733         select USB_U_ETHER
734         select USB_U_RNDIS
735         select USB_F_ECM
736         select USB_F_SUBSET
737         select CRC32
738         help
739           This driver implements Ethernet style communication, in one of
740           several ways:
741           
742            - The "Communication Device Class" (CDC) Ethernet Control Model.
743              That protocol is often avoided with pure Ethernet adapters, in
744              favor of simpler vendor-specific hardware, but is widely
745              supported by firmware for smart network devices.
746
747            - On hardware can't implement that protocol, a simple CDC subset
748              is used, placing fewer demands on USB.
749
750            - CDC Ethernet Emulation Model (EEM) is a newer standard that has
751              a simpler interface that can be used by more USB hardware.
752
753           RNDIS support is an additional option, more demanding than than
754           subset.
755
756           Within the USB device, this gadget driver exposes a network device
757           "usbX", where X depends on what other networking devices you have.
758           Treat it like a two-node Ethernet link:  host, and gadget.
759
760           The Linux-USB host-side "usbnet" driver interoperates with this
761           driver, so that deep I/O queues can be supported.  On 2.4 kernels,
762           use "CDCEther" instead, if you're using the CDC option. That CDC
763           mode should also interoperate with standard CDC Ethernet class
764           drivers on other host operating systems.
765
766           Say "y" to link the driver statically, or "m" to build a
767           dynamically linked module called "g_ether".
768
769 config USB_ETH_RNDIS
770         bool "RNDIS support"
771         depends on USB_ETH
772         select USB_LIBCOMPOSITE
773         select USB_F_RNDIS
774         default y
775         help
776            Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
777            and Microsoft provides redistributable binary RNDIS drivers for
778            older versions of Windows.
779
780            If you say "y" here, the Ethernet gadget driver will try to provide
781            a second device configuration, supporting RNDIS to talk to such
782            Microsoft USB hosts.
783            
784            To make MS-Windows work with this, use Documentation/usb/linux.inf
785            as the "driver info file".  For versions of MS-Windows older than
786            XP, you'll need to download drivers from Microsoft's website; a URL
787            is given in comments found in that info file.
788
789 config USB_ETH_EEM
790        bool "Ethernet Emulation Model (EEM) support"
791        depends on USB_ETH
792         select USB_LIBCOMPOSITE
793         select USB_F_EEM
794        default n
795        help
796          CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
797          and therefore can be supported by more hardware.  Technically ECM and
798          EEM are designed for different applications.  The ECM model extends
799          the network interface to the target (e.g. a USB cable modem), and the
800          EEM model is for mobile devices to communicate with hosts using
801          ethernet over USB.  For Linux gadgets, however, the interface with
802          the host is the same (a usbX device), so the differences are minimal.
803
804          If you say "y" here, the Ethernet gadget driver will use the EEM
805          protocol rather than ECM.  If unsure, say "n".
806
807 config USB_G_NCM
808         tristate "Network Control Model (NCM) support"
809         depends on NET
810         select USB_LIBCOMPOSITE
811         select USB_U_ETHER
812         select USB_F_NCM
813         select CRC32
814         help
815           This driver implements USB CDC NCM subclass standard. NCM is
816           an advanced protocol for Ethernet encapsulation, allows grouping
817           of several ethernet frames into one USB transfer and different
818           alignment possibilities.
819
820           Say "y" to link the driver statically, or "m" to build a
821           dynamically linked module called "g_ncm".
822
823 config USB_GADGETFS
824         tristate "Gadget Filesystem"
825         help
826           This driver provides a filesystem based API that lets user mode
827           programs implement a single-configuration USB device, including
828           endpoint I/O and control requests that don't relate to enumeration.
829           All endpoints, transfer speeds, and transfer types supported by
830           the hardware are available, through read() and write() calls.
831
832           Say "y" to link the driver statically, or "m" to build a
833           dynamically linked module called "gadgetfs".
834
835 config USB_FUNCTIONFS
836         tristate "Function Filesystem"
837         select USB_LIBCOMPOSITE
838         select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS)
839         help
840           The Function Filesystem (FunctionFS) lets one create USB
841           composite functions in user space in the same way GadgetFS
842           lets one create USB gadgets in user space.  This allows creation
843           of composite gadgets such that some of the functions are
844           implemented in kernel space (for instance Ethernet, serial or
845           mass storage) and other are implemented in user space.
846
847           If you say "y" or "m" here you will be able what kind of
848           configurations the gadget will provide.
849
850           Say "y" to link the driver statically, or "m" to build
851           a dynamically linked module called "g_ffs".
852
853 config USB_FUNCTIONFS_ETH
854         bool "Include configuration with CDC ECM (Ethernet)"
855         depends on USB_FUNCTIONFS && NET
856         select USB_U_ETHER
857         help
858           Include a configuration with CDC ECM function (Ethernet) and the
859           Function Filesystem.
860
861 config USB_FUNCTIONFS_RNDIS
862         bool "Include configuration with RNDIS (Ethernet)"
863         depends on USB_FUNCTIONFS && NET
864         select USB_U_ETHER
865         select USB_U_RNDIS
866         help
867           Include a configuration with RNDIS function (Ethernet) and the Filesystem.
868
869 config USB_FUNCTIONFS_GENERIC
870         bool "Include 'pure' configuration"
871         depends on USB_FUNCTIONFS
872         help
873           Include a configuration with the Function Filesystem alone with
874           no Ethernet interface.
875
876 config USB_MASS_STORAGE
877         tristate "Mass Storage Gadget"
878         depends on BLOCK
879         select USB_LIBCOMPOSITE
880         help
881           The Mass Storage Gadget acts as a USB Mass Storage disk drive.
882           As its storage repository it can use a regular file or a block
883           device (in much the same way as the "loop" device driver),
884           specified as a module parameter or sysfs option.
885
886           This driver is a replacement for now removed File-backed
887           Storage Gadget (g_file_storage).
888
889           Say "y" to link the driver statically, or "m" to build
890           a dynamically linked module called "g_mass_storage".
891
892 config USB_GADGET_TARGET
893         tristate "USB Gadget Target Fabric Module"
894         depends on TARGET_CORE
895         select USB_LIBCOMPOSITE
896         help
897           This fabric is an USB gadget. Two USB protocols are supported that is
898           BBB or BOT (Bulk Only Transport) and UAS (USB Attached SCSI). BOT is
899           advertised on alternative interface 0 (primary) and UAS is on
900           alternative interface 1. Both protocols can work on USB2.0 and USB3.0.
901           UAS utilizes the USB 3.0 feature called streams support.
902
903 config USB_G_SERIAL
904         tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
905         depends on TTY
906         select USB_U_SERIAL
907         select USB_F_ACM
908         select USB_F_SERIAL
909         select USB_F_OBEX
910         select USB_LIBCOMPOSITE
911         help
912           The Serial Gadget talks to the Linux-USB generic serial driver.
913           This driver supports a CDC-ACM module option, which can be used
914           to interoperate with MS-Windows hosts or with the Linux-USB
915           "cdc-acm" driver.
916
917           This driver also supports a CDC-OBEX option.  You will need a
918           user space OBEX server talking to /dev/ttyGS*, since the kernel
919           itself doesn't implement the OBEX protocol.
920
921           Say "y" to link the driver statically, or "m" to build a
922           dynamically linked module called "g_serial".
923
924           For more information, see Documentation/usb/gadget_serial.txt
925           which includes instructions and a "driver info file" needed to
926           make MS-Windows work with CDC ACM.
927
928 config USB_MIDI_GADGET
929         tristate "MIDI Gadget"
930         depends on SND
931         select USB_LIBCOMPOSITE
932         select SND_RAWMIDI
933         help
934           The MIDI Gadget acts as a USB Audio device, with one MIDI
935           input and one MIDI output. These MIDI jacks appear as
936           a sound "card" in the ALSA sound system. Other MIDI
937           connections can then be made on the gadget system, using
938           ALSA's aconnect utility etc.
939
940           Say "y" to link the driver statically, or "m" to build a
941           dynamically linked module called "g_midi".
942
943 config USB_G_PRINTER
944         tristate "Printer Gadget"
945         select USB_LIBCOMPOSITE
946         help
947           The Printer Gadget channels data between the USB host and a
948           userspace program driving the print engine. The user space
949           program reads and writes the device file /dev/g_printer to
950           receive or send printer data. It can use ioctl calls to
951           the device file to get or set printer status.
952
953           Say "y" to link the driver statically, or "m" to build a
954           dynamically linked module called "g_printer".
955
956           For more information, see Documentation/usb/gadget_printer.txt
957           which includes sample code for accessing the device file.
958
959 if TTY
960
961 config USB_CDC_COMPOSITE
962         tristate "CDC Composite Device (Ethernet and ACM)"
963         depends on NET
964         select USB_LIBCOMPOSITE
965         select USB_U_SERIAL
966         select USB_U_ETHER
967         select USB_F_ACM
968         select USB_F_ECM
969         help
970           This driver provides two functions in one configuration:
971           a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
972
973           This driver requires four bulk and two interrupt endpoints,
974           plus the ability to handle altsettings.  Not all peripheral
975           controllers are that capable.
976
977           Say "y" to link the driver statically, or "m" to build a
978           dynamically linked module.
979
980 config USB_G_NOKIA
981         tristate "Nokia composite gadget"
982         depends on PHONET
983         select USB_LIBCOMPOSITE
984         select USB_U_SERIAL
985         select USB_U_ETHER
986         select USB_F_ACM
987         select USB_F_OBEX
988         select USB_F_PHONET
989         select USB_F_ECM
990         help
991           The Nokia composite gadget provides support for acm, obex
992           and phonet in only one composite gadget driver.
993
994           It's only really useful for N900 hardware. If you're building
995           a kernel for N900, say Y or M here. If unsure, say N.
996
997 config USB_G_ACM_MS
998         tristate "CDC Composite Device (ACM and mass storage)"
999         depends on BLOCK
1000         select USB_LIBCOMPOSITE
1001         select USB_U_SERIAL
1002         select USB_F_ACM
1003         help
1004           This driver provides two functions in one configuration:
1005           a mass storage, and a CDC ACM (serial port) link.
1006
1007           Say "y" to link the driver statically, or "m" to build a
1008           dynamically linked module called "g_acm_ms".
1009
1010 config USB_G_MULTI
1011         tristate "Multifunction Composite Gadget"
1012         depends on BLOCK && NET
1013         select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
1014         select USB_LIBCOMPOSITE
1015         select USB_U_SERIAL
1016         select USB_U_ETHER
1017         select USB_U_RNDIS
1018         select USB_F_ACM
1019         help
1020           The Multifunction Composite Gadget provides Ethernet (RNDIS
1021           and/or CDC Ethernet), mass storage and ACM serial link
1022           interfaces.
1023
1024           You will be asked to choose which of the two configurations is
1025           to be available in the gadget.  At least one configuration must
1026           be chosen to make the gadget usable.  Selecting more than one
1027           configuration will prevent Windows from automatically detecting
1028           the gadget as a composite gadget, so an INF file will be needed to
1029           use the gadget.
1030
1031           Say "y" to link the driver statically, or "m" to build a
1032           dynamically linked module called "g_multi".
1033
1034 config USB_G_MULTI_RNDIS
1035         bool "RNDIS + CDC Serial + Storage configuration"
1036         depends on USB_G_MULTI
1037         default y
1038         help
1039           This option enables a configuration with RNDIS, CDC Serial and
1040           Mass Storage functions available in the Multifunction Composite
1041           Gadget.  This is the configuration dedicated for Windows since RNDIS
1042           is Microsoft's protocol.
1043
1044           If unsure, say "y".
1045
1046 config USB_G_MULTI_CDC
1047         bool "CDC Ethernet + CDC Serial + Storage configuration"
1048         depends on USB_G_MULTI
1049         default n
1050         help
1051           This option enables a configuration with CDC Ethernet (ECM), CDC
1052           Serial and Mass Storage functions available in the Multifunction
1053           Composite Gadget.
1054
1055           If unsure, say "y".
1056
1057 endif # TTY
1058
1059 config USB_G_HID
1060         tristate "HID Gadget"
1061         select USB_LIBCOMPOSITE
1062         help
1063           The HID gadget driver provides generic emulation of USB
1064           Human Interface Devices (HID).
1065
1066           For more information, see Documentation/usb/gadget_hid.txt which
1067           includes sample code for accessing the device files.
1068
1069           Say "y" to link the driver statically, or "m" to build a
1070           dynamically linked module called "g_hid".
1071
1072 # Standalone / single function gadgets
1073 config USB_G_DBGP
1074         tristate "EHCI Debug Device Gadget"
1075         depends on TTY
1076         select USB_LIBCOMPOSITE
1077         help
1078           This gadget emulates an EHCI Debug device. This is useful when you want
1079           to interact with an EHCI Debug Port.
1080
1081           Say "y" to link the driver statically, or "m" to build a
1082           dynamically linked module called "g_dbgp".
1083
1084 if USB_G_DBGP
1085 choice
1086         prompt "EHCI Debug Device mode"
1087         default USB_G_DBGP_SERIAL
1088
1089 config USB_G_DBGP_PRINTK
1090         depends on USB_G_DBGP
1091         bool "printk"
1092         help
1093           Directly printk() received data. No interaction.
1094
1095 config USB_G_DBGP_SERIAL
1096         depends on USB_G_DBGP
1097         select USB_U_SERIAL
1098         bool "serial"
1099         help
1100           Userland can interact using /dev/ttyGSxxx.
1101 endchoice
1102 endif
1103
1104 # put drivers that need isochronous transfer support (for audio
1105 # or video class gadget drivers), or specific hardware, here.
1106 config USB_G_WEBCAM
1107         tristate "USB Webcam Gadget"
1108         depends on VIDEO_DEV
1109         select USB_LIBCOMPOSITE
1110         select VIDEOBUF2_VMALLOC
1111         help
1112           The Webcam Gadget acts as a composite USB Audio and Video Class
1113           device. It provides a userspace API to process UVC control requests
1114           and stream video data to the host.
1115
1116           Say "y" to link the driver statically, or "m" to build a
1117           dynamically linked module called "g_webcam".
1118
1119 endchoice
1120
1121 endif # USB_GADGET