Root/drivers/usb/gadget/Kconfig

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

Archive Download this file



interactive