fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / usb / gadget / Kconfig
index 3d4bf28..4097a86 100644 (file)
@@ -7,7 +7,7 @@
 #
 #  - 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 of controller.
+#  - 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).
@@ -26,7 +26,7 @@ config USB_GADGET
           you need a low level bus controller driver, and some software
           talking to it.  Peripheral controllers are often discrete silicon,
           or are integrated with the CPU in a microcontroller.  The more
-          familiar host side controllers have names like like "EHCI", "OHCI",
+          familiar host side controllers have names like "EHCI", "OHCI",
           or "UHCI", and are usually integrated into southbridges on PC
           motherboards.
 
@@ -39,6 +39,23 @@ config USB_GADGET
           If in doubt, say "N" and don't enable these drivers; most people
           don't have this kind of hardware (except maybe inside Linux PDAs).
 
+          For more information, see <http://www.linux-usb.org/gadget> and
+          the kernel DocBook documentation for this API.
+
+config USB_GADGET_DEBUG_FILES
+       boolean "Debugging information files"
+       depends on USB_GADGET && PROC_FS
+       help
+          Some of the drivers in the "gadget" framework can expose
+          debugging information in files such as /proc/driver/udc
+          (for a peripheral controller).  The information in these
+          files may help when you're troubleshooting or bringing up a
+          driver on a new board.   Enable these files by choosing "Y"
+          here.  If in doubt, or to conserve kernel memory, say "N".
+
+config USB_GADGET_SELECTED
+       boolean
+
 #
 # USB Peripheral Controller Support
 #
@@ -48,13 +65,15 @@ choice
        help
           A USB device uses a controller to talk to its host.
           Systems should have only one such upstream link.
+          Many controller drivers are platform-specific; these
+          often need board-specific hooks.
 
 config USB_GADGET_NET2280
-       boolean "NetChip 2280"
+       boolean "NetChip 228x"
        depends on PCI
        select USB_GADGET_DUALSPEED
        help
-          NetChip 2280 is a PCI based USB peripheral controller which
+          NetChip 2280 / 2282 is a PCI based USB peripheral controller which
           supports both full and high speed USB 2.0 data transfers.  
           
           It has six configurable endpoints, as well as endpoint zero
@@ -69,12 +88,13 @@ config USB_NET2280
        tristate
        depends on USB_GADGET_NET2280
        default USB_GADGET
+       select USB_GADGET_SELECTED
 
 config USB_GADGET_PXA2XX
-       boolean "PXA 2xx or IXP 4xx"
-       depends on ARCH_PXA || ARCH_IXP4XX
+       boolean "PXA 25x or IXP 4xx"
+       depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
        help
-          Intel's PXA 2xx series XScale ARM-5TE processors include
+          Intel's PXA 25x series XScale ARM-5TE processors include
           an integrated full speed USB 1.1 device controller.  The
           controller in the IXP 4xx series is register-compatible.
 
@@ -89,12 +109,14 @@ config USB_PXA2XX
        tristate
        depends on USB_GADGET_PXA2XX
        default USB_GADGET
+       select USB_GADGET_SELECTED
 
 # if there's only one gadget driver, using only two bulk endpoints,
 # don't waste memory for the other endpoints
 config USB_PXA2XX_SMALL
        depends on USB_GADGET_PXA2XX
        bool
+       default n if USB_ETH_RNDIS
        default y if USB_ZERO
        default y if USB_ETH
        default y if USB_G_SERIAL
@@ -117,26 +139,75 @@ config USB_GOKU
        tristate
        depends on USB_GADGET_GOKU
        default USB_GADGET
+       select USB_GADGET_SELECTED
+
 
-# this could be built elsewhere (doesn't yet exist)
-config USB_GADGET_SA1100
-       boolean "SA 1100"
-       depends on ARCH_SA1100
+config USB_GADGET_LH7A40X
+       boolean "LH7A40X"
+       depends on ARCH_LH7A40X
        help
-          Intel's SA-1100 is an ARM-4 processor with an integrated
-          full speed USB 1.1 device controller.
+    This driver provides USB Device Controller driver for LH7A40x
+
+config USB_LH7A40X
+       tristate
+       depends on USB_GADGET_LH7A40X
+       default USB_GADGET
+       select USB_GADGET_SELECTED
 
-          It has two fixed-function endpoints, as well as endpoint
-          zero (for control transfers).
 
-config USB_SA1100
+config USB_GADGET_OMAP
+       boolean "OMAP USB Device Controller"
+       depends on ARCH_OMAP
+       select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
+       help
+          Many Texas Instruments OMAP processors have flexible full
+          speed USB device controllers, with support for up to 30
+          endpoints (plus endpoint zero).  This driver supports the
+          controller in the OMAP 1611, and should work with controllers
+          in other OMAP processors too, given minor tweaks.
+
+          Say "y" to link the driver statically, or "m" to build a
+          dynamically linked module called "omap_udc" and force all
+          gadget drivers to also be dynamically linked.
+
+config USB_OMAP
        tristate
-       depends on USB_GADGET_SA1100
+       depends on USB_GADGET_OMAP
+       default USB_GADGET
+       select USB_GADGET_SELECTED
+
+config USB_OTG
+       boolean "OTG Support"
+       depends on USB_GADGET_OMAP && ARCH_OMAP_OTG && USB_OHCI_HCD
+       help
+          The most notable feature of USB OTG is support for a
+          "Dual-Role" device, which can act as either a device
+          or a host.  The initial role choice can be changed
+          later, when two dual-role devices talk to each other.
+
+          Select this only if your OMAP board has a Mini-AB connector.
+
+config USB_GADGET_AT91
+       boolean "AT91 USB Device Port"
+       depends on ARCH_AT91
+       select USB_GADGET_SELECTED
+       help
+          Many Atmel AT91 processors (such as the AT91RM2000) have a
+          full speed USB Device Port with support for five configurable
+          endpoints (plus endpoint zero).
+
+          Say "y" to link the driver statically, or "m" to build a
+          dynamically linked module called "at91_udc" and force all
+          gadget drivers to also be dynamically linked.
+
+config USB_AT91
+       tristate
+       depends on USB_GADGET_AT91
        default USB_GADGET
 
 config USB_GADGET_DUMMY_HCD
        boolean "Dummy HCD (DEVELOPMENT)"
-       depends on USB && EXPERIMENTAL
+       depends on (USB=y || (USB=m && USB_GADGET=m)) && EXPERIMENTAL
        select USB_GADGET_DUALSPEED
        help
          This host controller driver emulates USB, looping all data transfer
@@ -161,6 +232,10 @@ config USB_DUMMY_HCD
        tristate
        depends on USB_GADGET_DUMMY_HCD
        default USB_GADGET
+       select USB_GADGET_SELECTED
+
+# NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
+# first and will be selected by default.
 
 endchoice
 
@@ -177,8 +252,23 @@ config USB_GADGET_DUALSPEED
 #
 choice
        tristate "USB Gadget Drivers"
-       depends on USB_GADGET
+       depends on USB_GADGET && USB_GADGET_SELECTED
        default USB_ETH
+       help
+         A Linux "Gadget Driver" talks to the USB Peripheral Controller
+         driver through the abstract "gadget" API.  Some other operating
+         systems call these "client" drivers, of which "class drivers"
+         are a subset (implementing a USB device class specification).
+         A gadget driver implements one or more USB functions using
+         the peripheral hardware.
+
+         Gadget drivers are hardware-neutral, or "platform independent",
+         except that they sometimes must understand quirks or limitations
+         of the particular controllers they work with.  For example, when
+         a controller doesn't support alternate configurations or provide
+         enough of the right types of endpoints, the gadget driver might
+         not be able work with that controller, or might need to implement
+         a less common variant of a device class protocol.
 
 # this first set of drivers all depend on bulk-capable hardware.
 
@@ -207,8 +297,18 @@ config USB_ZERO
          Say "y" to link the driver statically, or "m" to build a
          dynamically linked module called "g_zero".
 
+config USB_ZERO_HNPTEST
+       boolean "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_ETH
-       tristate "Ethernet Gadget"
+       tristate "Ethernet Gadget (with CDC Ethernet support)"
        depends on NET
        help
          This driver implements Ethernet style communication, in either
@@ -249,6 +349,11 @@ config USB_ETH_RNDIS
           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_GADGETFS
        tristate "Gadget Filesystem (EXPERIMENTAL)"
@@ -264,9 +369,7 @@ config USB_GADGETFS
          dynamically linked module called "gadgetfs".
 
 config USB_FILE_STORAGE
-       tristate "File-backed Storage Gadget (DEVELOPMENT)"
-       # we don't support the SA1100 because of its limitations
-       depends on USB_GADGET_SA1100 = n
+       tristate "File-backed Storage Gadget"
        help
          The File-backed Storage Gadget acts as a USB Mass Storage
          disk drive.  As its storage repository it can use a regular
@@ -277,7 +380,7 @@ config USB_FILE_STORAGE
          dynamically linked module called "g_file_storage".
 
 config USB_FILE_STORAGE_TEST
-       bool "File-backed Storage Gadget test version"
+       bool "File-backed Storage Gadget testing version"
        depends on USB_FILE_STORAGE
        default n
        help
@@ -287,13 +390,33 @@ config USB_FILE_STORAGE_TEST
          normal operation.
 
 config USB_G_SERIAL
-       tristate "Serial Gadget"
+       tristate "Serial Gadget (with CDC ACM support)"
        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.
 
          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 this driver.
+
+config USB_MIDI_GADGET
+       tristate "MIDI Gadget (EXPERIMENTAL)"
+       depends on SND && EXPERIMENTAL
+       select SND_RAWMIDI
+       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".
 
 
 # put drivers that need isochronous transfer support (for audio