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