fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / usb / gadget / Kconfig
index decbca3..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).
 #
 #  - 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).
 #
 # 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
           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.
 
           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).
 
           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
 #
 #
 # 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.
        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
 
 config USB_GADGET_NET2280
-       boolean "NetChip 2280"
+       boolean "NetChip 228x"
        depends on PCI
        select USB_GADGET_DUALSPEED
        help
        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
           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
        tristate
        depends on USB_GADGET_NET2280
        default USB_GADGET
+       select USB_GADGET_SELECTED
 
 config USB_GADGET_PXA2XX
 
 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
        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.
 
           an integrated full speed USB 1.1 device controller.  The
           controller in the IXP 4xx series is register-compatible.
 
@@ -89,6 +109,7 @@ config USB_PXA2XX
        tristate
        depends on USB_GADGET_PXA2XX
        default USB_GADGET
        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
 
 # if there's only one gadget driver, using only two bulk endpoints,
 # don't waste memory for the other endpoints
@@ -118,22 +139,8 @@ config USB_GOKU
        tristate
        depends on USB_GADGET_GOKU
        default USB_GADGET
        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
-       help
-          Intel's SA-1100 is an ARM-4 processor with an integrated
-          full speed USB 1.1 device controller.
-
-          It has two fixed-function endpoints, as well as endpoint
-          zero (for control transfers).
-
-config USB_SA1100
-       tristate
-       depends on USB_GADGET_SA1100
-       default USB_GADGET
 
 config USB_GADGET_LH7A40X
        boolean "LH7A40X"
 
 config USB_GADGET_LH7A40X
        boolean "LH7A40X"
@@ -145,40 +152,13 @@ config USB_LH7A40X
        tristate
        depends on USB_GADGET_LH7A40X
        default USB_GADGET
        tristate
        depends on USB_GADGET_LH7A40X
        default USB_GADGET
+       select USB_GADGET_SELECTED
 
 
 
 
-config USB_GADGET_DUMMY_HCD
-       boolean "Dummy HCD (DEVELOPMENT)"
-       depends on USB && EXPERIMENTAL
-       select USB_GADGET_DUALSPEED
-       help
-         This host controller driver emulates USB, looping all data transfer
-         requests back to a USB "gadget driver" in the same host.  The host
-         side is the master; the gadget side is the slave.  Gadget drivers
-         can be high, full, or low speed; and they have access to endpoints
-         like those from NET2280, PXA2xx, or SA1100 hardware.
-         
-         This may help in some stages of creating a driver to embed in a
-         Linux device, since it lets you debug several parts of the gadget
-         driver without its hardware or drivers being involved.
-         
-         Since such a gadget side driver needs to interoperate with a host
-         side Linux-USB device driver, this may help to debug both sides
-         of a USB protocol stack.
-
-         Say "y" to link the driver statically, or "m" to build a
-         dynamically linked module called "dummy_hcd" and force all
-         gadget drivers to also be dynamically linked.
-
-config USB_DUMMY_HCD
-       tristate
-       depends on USB_GADGET_DUMMY_HCD
-       default USB_GADGET
-
 config USB_GADGET_OMAP
        boolean "OMAP USB Device Controller"
        depends on ARCH_OMAP
 config USB_GADGET_OMAP
        boolean "OMAP USB Device Controller"
        depends on ARCH_OMAP
-       select ISP1301_OMAP if MACH_OMAP_H2
+       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
        help
           Many Texas Instruments OMAP processors have flexible full
           speed USB device controllers, with support for up to 30
@@ -194,6 +174,7 @@ config USB_OMAP
        tristate
        depends on USB_GADGET_OMAP
        default USB_GADGET
        tristate
        depends on USB_GADGET_OMAP
        default USB_GADGET
+       select USB_GADGET_SELECTED
 
 config USB_OTG
        boolean "OTG Support"
 
 config USB_OTG
        boolean "OTG Support"
@@ -206,9 +187,55 @@ config USB_OTG
 
           Select this only if your OMAP board has a Mini-AB connector.
 
 
           Select this only if your OMAP board has a Mini-AB connector.
 
-config USB_OMAP_PROC
-       boolean "/proc/driver/udc file"
-       depends on USB_GADGET_OMAP
+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=y || (USB=m && USB_GADGET=m)) && EXPERIMENTAL
+       select USB_GADGET_DUALSPEED
+       help
+         This host controller driver emulates USB, looping all data transfer
+         requests back to a USB "gadget driver" in the same host.  The host
+         side is the master; the gadget side is the slave.  Gadget drivers
+         can be high, full, or low speed; and they have access to endpoints
+         like those from NET2280, PXA2xx, or SA1100 hardware.
+         
+         This may help in some stages of creating a driver to embed in a
+         Linux device, since it lets you debug several parts of the gadget
+         driver without its hardware or drivers being involved.
+         
+         Since such a gadget side driver needs to interoperate with a host
+         side Linux-USB device driver, this may help to debug both sides
+         of a USB protocol stack.
+
+         Say "y" to link the driver statically, or "m" to build a
+         dynamically linked module called "dummy_hcd" and force all
+         gadget drivers to also be dynamically linked.
+
+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
 
 
 endchoice
 
@@ -225,8 +252,23 @@ config USB_GADGET_DUALSPEED
 #
 choice
        tristate "USB Gadget Drivers"
 #
 choice
        tristate "USB Gadget Drivers"
-       depends on USB_GADGET
+       depends on USB_GADGET && USB_GADGET_SELECTED
        default USB_ETH
        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.
 
 
 # this first set of drivers all depend on bulk-capable hardware.
 
@@ -266,7 +308,7 @@ config USB_ZERO_HNPTEST
          one serve as the USB host instead (in the "B-Host" role).
 
 config USB_ETH
          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
        depends on NET
        help
          This driver implements Ethernet style communication, in either
@@ -307,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.
           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)"
 
 config USB_GADGETFS
        tristate "Gadget Filesystem (EXPERIMENTAL)"
@@ -323,8 +370,6 @@ config USB_GADGETFS
 
 config USB_FILE_STORAGE
        tristate "File-backed Storage Gadget"
 
 config USB_FILE_STORAGE
        tristate "File-backed Storage Gadget"
-       # we don't support the SA1100 because of its limitations
-       depends on USB_GADGET_SA1100 = n
        help
          The File-backed Storage Gadget acts as a USB Mass Storage
          disk drive.  As its storage repository it can use a regular
        help
          The File-backed Storage Gadget acts as a USB Mass Storage
          disk drive.  As its storage repository it can use a regular
@@ -345,13 +390,33 @@ config USB_FILE_STORAGE_TEST
          normal operation.
 
 config USB_G_SERIAL
          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.
        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".
 
 
          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
 
 
 # put drivers that need isochronous transfer support (for audio