Root/drivers/usb/gadget/Kconfig

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

Archive Download this file



interactive