Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / usb / gadget / legacy / Kconfig
diff --git a/kernel/drivers/usb/gadget/legacy/Kconfig b/kernel/drivers/usb/gadget/legacy/Kconfig
new file mode 100644 (file)
index 0000000..d5a7102
--- /dev/null
@@ -0,0 +1,481 @@
+#
+# USB Gadget support on a system involves
+#    (a) a peripheral controller, and
+#    (b) the gadget driver using it.
+#
+# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
+#
+#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
+#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
+#  - Some systems have both kinds of controllers.
+#
+# With help from a special transceiver and a "Mini-AB" jack, systems with
+# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
+#
+
+config USB_ZERO
+       tristate "Gadget Zero (DEVELOPMENT)"
+       select USB_LIBCOMPOSITE
+       select USB_F_SS_LB
+       help
+         Gadget Zero is a two-configuration device.  It either sinks and
+         sources bulk data; or it loops back a configurable number of
+         transfers.  It also implements control requests, for "chapter 9"
+         conformance.  The driver needs only two bulk-capable endpoints, so
+         it can work on top of most device-side usb controllers.  It's
+         useful for testing, and is also a working example showing how
+         USB "gadget drivers" can be written.
+
+         Make this be the first driver you try using on top of any new
+         USB peripheral controller driver.  Then you can use host-side
+         test software, like the "usbtest" driver, to put your hardware
+         and its driver through a basic set of functional tests.
+
+         Gadget Zero also works with the host-side "usb-skeleton" driver,
+         and with many kinds of host-side test software.  You may need
+         to tweak product and vendor IDs before host software knows about
+         this device, and arrange to select an appropriate configuration.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_zero".
+
+config USB_ZERO_HNPTEST
+       bool "HNP Test Device"
+       depends on USB_ZERO && USB_OTG
+       help
+         You can configure this device to enumerate using the device
+         identifiers of the USB-OTG test device.  That means that when
+         this gadget connects to another OTG device, with this one using
+         the "B-Peripheral" role, that device will use HNP to let this
+         one serve as the USB host instead (in the "B-Host" role).
+
+config USB_AUDIO
+       tristate "Audio Gadget"
+       depends on SND
+       select USB_LIBCOMPOSITE
+       select SND_PCM
+       select USB_F_UAC1 if GADGET_UAC1
+       select USB_F_UAC2 if !GADGET_UAC1
+       help
+         This Gadget Audio driver is compatible with USB Audio Class
+         specification 2.0. It implements 1 AudioControl interface,
+         1 AudioStreaming Interface each for USB-OUT and USB-IN.
+         Number of channels, sample rate and sample size can be
+         specified as module parameters.
+         This driver doesn't expect any real Audio codec to be present
+         on the device - the audio streams are simply sinked to and
+         sourced from a virtual ALSA sound card created. The user-space
+         application may choose to do whatever it wants with the data
+         received from the USB Host and choose to provide whatever it
+         wants as audio data to the USB Host.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_audio".
+
+config GADGET_UAC1
+       bool "UAC 1.0 (Legacy)"
+       depends on USB_AUDIO
+       help
+         If you instead want older UAC Spec-1.0 driver that also has audio
+         paths hardwired to the Audio codec chip on-board and doesn't work
+         without one.
+
+config USB_ETH
+       tristate "Ethernet Gadget (with CDC Ethernet support)"
+       depends on NET
+       select USB_LIBCOMPOSITE
+       select USB_U_ETHER
+       select USB_F_ECM
+       select USB_F_SUBSET
+       select CRC32
+       help
+         This driver implements Ethernet style communication, in one of
+         several ways:
+
+          - The "Communication Device Class" (CDC) Ethernet Control Model.
+            That protocol is often avoided with pure Ethernet adapters, in
+            favor of simpler vendor-specific hardware, but is widely
+            supported by firmware for smart network devices.
+
+          - On hardware can't implement that protocol, a simple CDC subset
+            is used, placing fewer demands on USB.
+
+          - CDC Ethernet Emulation Model (EEM) is a newer standard that has
+            a simpler interface that can be used by more USB hardware.
+
+         RNDIS support is an additional option, more demanding than than
+         subset.
+
+         Within the USB device, this gadget driver exposes a network device
+         "usbX", where X depends on what other networking devices you have.
+         Treat it like a two-node Ethernet link:  host, and gadget.
+
+         The Linux-USB host-side "usbnet" driver interoperates with this
+         driver, so that deep I/O queues can be supported.  On 2.4 kernels,
+         use "CDCEther" instead, if you're using the CDC option. That CDC
+         mode should also interoperate with standard CDC Ethernet class
+         drivers on other host operating systems.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_ether".
+
+config USB_ETH_RNDIS
+       bool "RNDIS support"
+       depends on USB_ETH
+       select USB_LIBCOMPOSITE
+       select USB_F_RNDIS
+       default y
+       help
+          Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
+          and Microsoft provides redistributable binary RNDIS drivers for
+          older versions of Windows.
+
+          If you say "y" here, the Ethernet gadget driver will try to provide
+          a second device configuration, supporting RNDIS to talk to such
+          Microsoft USB hosts.
+
+          To make MS-Windows work with this, use Documentation/usb/linux.inf
+          as the "driver info file".  For versions of MS-Windows older than
+          XP, you'll need to download drivers from Microsoft's website; a URL
+          is given in comments found in that info file.
+
+config USB_ETH_EEM
+       bool "Ethernet Emulation Model (EEM) support"
+       depends on USB_ETH
+       select USB_LIBCOMPOSITE
+       select USB_F_EEM
+       default n
+       help
+         CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
+         and therefore can be supported by more hardware.  Technically ECM and
+         EEM are designed for different applications.  The ECM model extends
+         the network interface to the target (e.g. a USB cable modem), and the
+         EEM model is for mobile devices to communicate with hosts using
+         ethernet over USB.  For Linux gadgets, however, the interface with
+         the host is the same (a usbX device), so the differences are minimal.
+
+         If you say "y" here, the Ethernet gadget driver will use the EEM
+         protocol rather than ECM.  If unsure, say "n".
+
+config USB_G_NCM
+       tristate "Network Control Model (NCM) support"
+       depends on NET
+       select USB_LIBCOMPOSITE
+       select USB_U_ETHER
+       select USB_F_NCM
+       select CRC32
+       help
+         This driver implements USB CDC NCM subclass standard. NCM is
+         an advanced protocol for Ethernet encapsulation, allows grouping
+         of several ethernet frames into one USB transfer and different
+         alignment possibilities.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_ncm".
+
+config USB_GADGETFS
+       tristate "Gadget Filesystem"
+       help
+         This driver provides a filesystem based API that lets user mode
+         programs implement a single-configuration USB device, including
+         endpoint I/O and control requests that don't relate to enumeration.
+         All endpoints, transfer speeds, and transfer types supported by
+         the hardware are available, through read() and write() calls.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "gadgetfs".
+
+config USB_FUNCTIONFS
+       tristate "Function Filesystem"
+       select USB_LIBCOMPOSITE
+       select USB_F_FS
+       select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH || USB_FUNCTIONFS_RNDIS)
+       help
+         The Function Filesystem (FunctionFS) lets one create USB
+         composite functions in user space in the same way GadgetFS
+         lets one create USB gadgets in user space.  This allows creation
+         of composite gadgets such that some of the functions are
+         implemented in kernel space (for instance Ethernet, serial or
+         mass storage) and other are implemented in user space.
+
+         If you say "y" or "m" here you will be able what kind of
+         configurations the gadget will provide.
+
+         Say "y" to link the driver statically, or "m" to build
+         a dynamically linked module called "g_ffs".
+
+config USB_FUNCTIONFS_ETH
+       bool "Include configuration with CDC ECM (Ethernet)"
+       depends on USB_FUNCTIONFS && NET
+       select USB_U_ETHER
+       select USB_F_ECM
+       select USB_F_SUBSET
+       help
+         Include a configuration with CDC ECM function (Ethernet) and the
+         Function Filesystem.
+
+config USB_FUNCTIONFS_RNDIS
+       bool "Include configuration with RNDIS (Ethernet)"
+       depends on USB_FUNCTIONFS && NET
+       select USB_U_ETHER
+       select USB_F_RNDIS
+       help
+         Include a configuration with RNDIS function (Ethernet) and the Filesystem.
+
+config USB_FUNCTIONFS_GENERIC
+       bool "Include 'pure' configuration"
+       depends on USB_FUNCTIONFS
+       help
+         Include a configuration with the Function Filesystem alone with
+         no Ethernet interface.
+
+config USB_MASS_STORAGE
+       tristate "Mass Storage Gadget"
+       depends on BLOCK
+       select USB_LIBCOMPOSITE
+       select USB_F_MASS_STORAGE
+       help
+         The Mass Storage Gadget acts as a USB Mass Storage disk drive.
+         As its storage repository it can use a regular file or a block
+         device (in much the same way as the "loop" device driver),
+         specified as a module parameter or sysfs option.
+
+         This driver is a replacement for now removed File-backed
+         Storage Gadget (g_file_storage).
+
+         Say "y" to link the driver statically, or "m" to build
+         a dynamically linked module called "g_mass_storage".
+
+config USB_GADGET_TARGET
+       tristate "USB Gadget Target Fabric Module"
+       depends on TARGET_CORE
+       select USB_LIBCOMPOSITE
+       help
+         This fabric is an USB gadget. Two USB protocols are supported that is
+         BBB or BOT (Bulk Only Transport) and UAS (USB Attached SCSI). BOT is
+         advertised on alternative interface 0 (primary) and UAS is on
+         alternative interface 1. Both protocols can work on USB2.0 and USB3.0.
+         UAS utilizes the USB 3.0 feature called streams support.
+
+config USB_G_SERIAL
+       tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
+       depends on TTY
+       select USB_U_SERIAL
+       select USB_F_ACM
+       select USB_F_SERIAL
+       select USB_F_OBEX
+       select USB_LIBCOMPOSITE
+       help
+         The Serial Gadget talks to the Linux-USB generic serial driver.
+         This driver supports a CDC-ACM module option, which can be used
+         to interoperate with MS-Windows hosts or with the Linux-USB
+         "cdc-acm" driver.
+
+         This driver also supports a CDC-OBEX option.  You will need a
+         user space OBEX server talking to /dev/ttyGS*, since the kernel
+         itself doesn't implement the OBEX protocol.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_serial".
+
+         For more information, see Documentation/usb/gadget_serial.txt
+         which includes instructions and a "driver info file" needed to
+         make MS-Windows work with CDC ACM.
+
+config USB_MIDI_GADGET
+       tristate "MIDI Gadget"
+       depends on SND
+       select USB_LIBCOMPOSITE
+       select SND_RAWMIDI
+       select USB_F_MIDI
+       help
+         The MIDI Gadget acts as a USB Audio device, with one MIDI
+         input and one MIDI output. These MIDI jacks appear as
+         a sound "card" in the ALSA sound system. Other MIDI
+         connections can then be made on the gadget system, using
+         ALSA's aconnect utility etc.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_midi".
+
+config USB_G_PRINTER
+       tristate "Printer Gadget"
+       select USB_LIBCOMPOSITE
+       select USB_F_PRINTER
+       help
+         The Printer Gadget channels data between the USB host and a
+         userspace program driving the print engine. The user space
+         program reads and writes the device file /dev/g_printer to
+         receive or send printer data. It can use ioctl calls to
+         the device file to get or set printer status.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_printer".
+
+         For more information, see Documentation/usb/gadget_printer.txt
+         which includes sample code for accessing the device file.
+
+if TTY
+
+config USB_CDC_COMPOSITE
+       tristate "CDC Composite Device (Ethernet and ACM)"
+       depends on NET
+       select USB_LIBCOMPOSITE
+       select USB_U_SERIAL
+       select USB_U_ETHER
+       select USB_F_ACM
+       select USB_F_ECM
+       help
+         This driver provides two functions in one configuration:
+         a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
+
+         This driver requires four bulk and two interrupt endpoints,
+         plus the ability to handle altsettings.  Not all peripheral
+         controllers are that capable.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module.
+
+config USB_G_NOKIA
+       tristate "Nokia composite gadget"
+       depends on PHONET
+       select USB_LIBCOMPOSITE
+       select USB_U_SERIAL
+       select USB_U_ETHER
+       select USB_F_ACM
+       select USB_F_OBEX
+       select USB_F_PHONET
+       select USB_F_ECM
+       help
+         The Nokia composite gadget provides support for acm, obex
+         and phonet in only one composite gadget driver.
+
+         It's only really useful for N900 hardware. If you're building
+         a kernel for N900, say Y or M here. If unsure, say N.
+
+config USB_G_ACM_MS
+       tristate "CDC Composite Device (ACM and mass storage)"
+       depends on BLOCK
+       select USB_LIBCOMPOSITE
+       select USB_U_SERIAL
+       select USB_F_ACM
+       select USB_F_MASS_STORAGE
+       help
+         This driver provides two functions in one configuration:
+         a mass storage, and a CDC ACM (serial port) link.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_acm_ms".
+
+config USB_G_MULTI
+       tristate "Multifunction Composite Gadget"
+       depends on BLOCK && NET
+       select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
+       select USB_LIBCOMPOSITE
+       select USB_U_SERIAL
+       select USB_U_ETHER
+       select USB_F_ACM
+       select USB_F_MASS_STORAGE
+       help
+         The Multifunction Composite Gadget provides Ethernet (RNDIS
+         and/or CDC Ethernet), mass storage and ACM serial link
+         interfaces.
+
+         You will be asked to choose which of the two configurations is
+         to be available in the gadget.  At least one configuration must
+         be chosen to make the gadget usable.  Selecting more than one
+         configuration will prevent Windows from automatically detecting
+         the gadget as a composite gadget, so an INF file will be needed to
+         use the gadget.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_multi".
+
+config USB_G_MULTI_RNDIS
+       bool "RNDIS + CDC Serial + Storage configuration"
+       depends on USB_G_MULTI
+       select USB_F_RNDIS
+       default y
+       help
+         This option enables a configuration with RNDIS, CDC Serial and
+         Mass Storage functions available in the Multifunction Composite
+         Gadget.  This is the configuration dedicated for Windows since RNDIS
+         is Microsoft's protocol.
+
+         If unsure, say "y".
+
+config USB_G_MULTI_CDC
+       bool "CDC Ethernet + CDC Serial + Storage configuration"
+       depends on USB_G_MULTI
+       default n
+       select USB_F_ECM
+       help
+         This option enables a configuration with CDC Ethernet (ECM), CDC
+         Serial and Mass Storage functions available in the Multifunction
+         Composite Gadget.
+
+         If unsure, say "y".
+
+endif # TTY
+
+config USB_G_HID
+       tristate "HID Gadget"
+       select USB_LIBCOMPOSITE
+       select USB_F_HID
+       help
+         The HID gadget driver provides generic emulation of USB
+         Human Interface Devices (HID).
+
+         For more information, see Documentation/usb/gadget_hid.txt which
+         includes sample code for accessing the device files.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_hid".
+
+# Standalone / single function gadgets
+config USB_G_DBGP
+       tristate "EHCI Debug Device Gadget"
+       depends on TTY
+       select USB_LIBCOMPOSITE
+       help
+         This gadget emulates an EHCI Debug device. This is useful when you want
+         to interact with an EHCI Debug Port.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_dbgp".
+
+if USB_G_DBGP
+choice
+       prompt "EHCI Debug Device mode"
+       default USB_G_DBGP_SERIAL
+
+config USB_G_DBGP_PRINTK
+       depends on USB_G_DBGP
+       bool "printk"
+       help
+         Directly printk() received data. No interaction.
+
+config USB_G_DBGP_SERIAL
+       depends on USB_G_DBGP
+       select USB_U_SERIAL
+       bool "serial"
+       help
+         Userland can interact using /dev/ttyGSxxx.
+endchoice
+endif
+
+# put drivers that need isochronous transfer support (for audio
+# or video class gadget drivers), or specific hardware, here.
+config USB_G_WEBCAM
+       tristate "USB Webcam Gadget"
+       depends on VIDEO_DEV
+       select USB_LIBCOMPOSITE
+       select VIDEOBUF2_VMALLOC
+       select USB_F_UVC
+       help
+         The Webcam Gadget acts as a composite USB Audio and Video Class
+         device. It provides a userspace API to process UVC control requests
+         and stream video data to the host.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "g_webcam".