home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / drivers / usb / gadget / Kconfig next >
Encoding:
Text File  |  2006-08-11  |  14.5 KB  |  416 lines

  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 of controller.
  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. menu "USB Gadget Support"
  16.  
  17. config USB_GADGET
  18.     tristate "Support for USB Gadgets"
  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 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.  
  45. config USB_GADGET_DEBUG_FILES
  46.     boolean "Debugging information files"
  47.     depends on USB_GADGET && PROC_FS
  48.     help
  49.        Some of the drivers in the "gadget" framework can expose
  50.        debugging information in files such as /proc/driver/udc
  51.        (for a peripheral controller).  The information in these
  52.        files may help when you're troubleshooting or bringing up a
  53.        driver on a new board.   Enable these files by choosing "Y"
  54.        here.  If in doubt, or to conserve kernel memory, say "N".
  55.  
  56. config    USB_GADGET_SELECTED
  57.     boolean
  58.  
  59. #
  60. # USB Peripheral Controller Support
  61. #
  62. choice
  63.     prompt "USB Peripheral Controller"
  64.     depends on USB_GADGET
  65.     help
  66.        A USB device uses a controller to talk to its host.
  67.        Systems should have only one such upstream link.
  68.        Many controller drivers are platform-specific; these
  69.        often need board-specific hooks.
  70.  
  71. config USB_GADGET_NET2280
  72.     boolean "NetChip 228x"
  73.     depends on PCI
  74.     select USB_GADGET_DUALSPEED
  75.     help
  76.        NetChip 2280 / 2282 is a PCI based USB peripheral controller which
  77.        supports both full and high speed USB 2.0 data transfers.  
  78.        
  79.        It has six configurable endpoints, as well as endpoint zero
  80.        (for control transfers) and several endpoints with dedicated
  81.        functions.
  82.  
  83.        Say "y" to link the driver statically, or "m" to build a
  84.        dynamically linked module called "net2280" and force all
  85.        gadget drivers to also be dynamically linked.
  86.  
  87. config USB_NET2280
  88.     tristate
  89.     depends on USB_GADGET_NET2280
  90.     default USB_GADGET
  91.     select USB_GADGET_SELECTED
  92.  
  93. config USB_GADGET_PXA2XX
  94.     boolean "PXA 25x or IXP 4xx"
  95.     depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
  96.     help
  97.        Intel's PXA 25x series XScale ARM-5TE processors include
  98.        an integrated full speed USB 1.1 device controller.  The
  99.        controller in the IXP 4xx series is register-compatible.
  100.  
  101.        It has fifteen fixed-function endpoints, as well as endpoint
  102.        zero (for control transfers).
  103.  
  104.        Say "y" to link the driver statically, or "m" to build a
  105.        dynamically linked module called "pxa2xx_udc" and force all
  106.        gadget drivers to also be dynamically linked.
  107.  
  108. config USB_PXA2XX
  109.     tristate
  110.     depends on USB_GADGET_PXA2XX
  111.     default USB_GADGET
  112.     select USB_GADGET_SELECTED
  113.  
  114. # if there's only one gadget driver, using only two bulk endpoints,
  115. # don't waste memory for the other endpoints
  116. config USB_PXA2XX_SMALL
  117.     depends on USB_GADGET_PXA2XX
  118.     bool
  119.     default n if USB_ETH_RNDIS
  120.     default y if USB_ZERO
  121.     default y if USB_ETH
  122.     default y if USB_G_SERIAL
  123.  
  124. config USB_GADGET_GOKU
  125.     boolean "Toshiba TC86C001 'Goku-S'"
  126.     depends on PCI
  127.     help
  128.        The Toshiba TC86C001 is a PCI device which includes controllers
  129.        for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
  130.        
  131.        The device controller has three configurable (bulk or interrupt)
  132.        endpoints, plus endpoint zero (for control transfers).
  133.  
  134.        Say "y" to link the driver statically, or "m" to build a
  135.        dynamically linked module called "goku_udc" and to force all
  136.        gadget drivers to also be dynamically linked.
  137.  
  138. config USB_GOKU
  139.     tristate
  140.     depends on USB_GADGET_GOKU
  141.     default USB_GADGET
  142.     select USB_GADGET_SELECTED
  143.  
  144.  
  145. config USB_GADGET_LH7A40X
  146.     boolean "LH7A40X"
  147.     depends on ARCH_LH7A40X
  148.     help
  149.     This driver provides USB Device Controller driver for LH7A40x
  150.  
  151. config USB_LH7A40X
  152.     tristate
  153.     depends on USB_GADGET_LH7A40X
  154.     default USB_GADGET
  155.     select USB_GADGET_SELECTED
  156.  
  157.  
  158. config USB_GADGET_OMAP
  159.     boolean "OMAP USB Device Controller"
  160.     depends on ARCH_OMAP
  161.     select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
  162.     help
  163.        Many Texas Instruments OMAP processors have flexible full
  164.        speed USB device controllers, with support for up to 30
  165.        endpoints (plus endpoint zero).  This driver supports the
  166.        controller in the OMAP 1611, and should work with controllers
  167.        in other OMAP processors too, given minor tweaks.
  168.  
  169.        Say "y" to link the driver statically, or "m" to build a
  170.        dynamically linked module called "omap_udc" and force all
  171.        gadget drivers to also be dynamically linked.
  172.  
  173. config USB_OMAP
  174.     tristate
  175.     depends on USB_GADGET_OMAP
  176.     default USB_GADGET
  177.     select USB_GADGET_SELECTED
  178.  
  179. config USB_OTG
  180.     boolean "OTG Support"
  181.     depends on USB_GADGET_OMAP && ARCH_OMAP_OTG && USB_OHCI_HCD
  182.     help
  183.        The most notable feature of USB OTG is support for a
  184.        "Dual-Role" device, which can act as either a device
  185.        or a host.  The initial role choice can be changed
  186.        later, when two dual-role devices talk to each other.
  187.  
  188.        Select this only if your OMAP board has a Mini-AB connector.
  189.  
  190. config USB_GADGET_AT91
  191.     boolean "AT91 USB Device Port"
  192.     depends on ARCH_AT91RM9200
  193.     select USB_GADGET_SELECTED
  194.     help
  195.        Many Atmel AT91 processors (such as the AT91RM2000) have a
  196.        full speed USB Device Port with support for five configurable
  197.        endpoints (plus endpoint zero).
  198.  
  199.        Say "y" to link the driver statically, or "m" to build a
  200.        dynamically linked module called "at91_udc" and force all
  201.        gadget drivers to also be dynamically linked.
  202.  
  203. config USB_AT91
  204.     tristate
  205.     depends on USB_GADGET_AT91
  206.     default USB_GADGET
  207.  
  208. config USB_GADGET_DUMMY_HCD
  209.     boolean "Dummy HCD (DEVELOPMENT)"
  210.     depends on USB && EXPERIMENTAL
  211.     select USB_GADGET_DUALSPEED
  212.     help
  213.       This host controller driver emulates USB, looping all data transfer
  214.       requests back to a USB "gadget driver" in the same host.  The host
  215.       side is the master; the gadget side is the slave.  Gadget drivers
  216.       can be high, full, or low speed; and they have access to endpoints
  217.       like those from NET2280, PXA2xx, or SA1100 hardware.
  218.       
  219.       This may help in some stages of creating a driver to embed in a
  220.       Linux device, since it lets you debug several parts of the gadget
  221.       driver without its hardware or drivers being involved.
  222.       
  223.       Since such a gadget side driver needs to interoperate with a host
  224.       side Linux-USB device driver, this may help to debug both sides
  225.       of a USB protocol stack.
  226.  
  227.       Say "y" to link the driver statically, or "m" to build a
  228.       dynamically linked module called "dummy_hcd" and force all
  229.       gadget drivers to also be dynamically linked.
  230.  
  231. config USB_DUMMY_HCD
  232.     tristate
  233.     depends on USB_GADGET_DUMMY_HCD
  234.     default USB_GADGET
  235.     select USB_GADGET_SELECTED
  236.  
  237. # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
  238. # first and will be selected by default.
  239.  
  240. endchoice
  241.  
  242. config USB_GADGET_DUALSPEED
  243.     bool
  244.     depends on USB_GADGET
  245.     default n
  246.     help
  247.       Means that gadget drivers should include extra descriptors
  248.       and code to handle dual-speed controllers.
  249.  
  250. #
  251. # USB Gadget Drivers
  252. #
  253. choice
  254.     tristate "USB Gadget Drivers"
  255.     depends on USB_GADGET && USB_GADGET_SELECTED
  256.     default USB_ETH
  257.     help
  258.       A Linux "Gadget Driver" talks to the USB Peripheral Controller
  259.       driver through the abstract "gadget" API.  Some other operating
  260.       systems call these "client" drivers, of which "class drivers"
  261.       are a subset (implementing a USB device class specification).
  262.       A gadget driver implements one or more USB functions using
  263.       the peripheral hardware.
  264.  
  265.       Gadget drivers are hardware-neutral, or "platform independent",
  266.       except that they sometimes must understand quirks or limitations
  267.       of the particular controllers they work with.  For example, when
  268.       a controller doesn't support alternate configurations or provide
  269.       enough of the right types of endpoints, the gadget driver might
  270.       not be able work with that controller, or might need to implement
  271.       a less common variant of a device class protocol.
  272.  
  273. # this first set of drivers all depend on bulk-capable hardware.
  274.  
  275. config USB_ZERO
  276.     tristate "Gadget Zero (DEVELOPMENT)"
  277.     depends on EXPERIMENTAL
  278.     help
  279.       Gadget Zero is a two-configuration device.  It either sinks and
  280.       sources bulk data; or it loops back a configurable number of
  281.       transfers.  It also implements control requests, for "chapter 9"
  282.       conformance.  The driver needs only two bulk-capable endpoints, so
  283.       it can work on top of most device-side usb controllers.  It's
  284.       useful for testing, and is also a working example showing how
  285.       USB "gadget drivers" can be written.
  286.  
  287.       Make this be the first driver you try using on top of any new
  288.       USB peripheral controller driver.  Then you can use host-side
  289.       test software, like the "usbtest" driver, to put your hardware
  290.       and its driver through a basic set of functional tests.
  291.  
  292.       Gadget Zero also works with the host-side "usb-skeleton" driver,
  293.       and with many kinds of host-side test software.  You may need
  294.       to tweak product and vendor IDs before host software knows about
  295.       this device, and arrange to select an appropriate configuration.
  296.  
  297.       Say "y" to link the driver statically, or "m" to build a
  298.       dynamically linked module called "g_zero".
  299.  
  300. config USB_ZERO_HNPTEST
  301.     boolean "HNP Test Device"
  302.     depends on USB_ZERO && USB_OTG
  303.     help
  304.       You can configure this device to enumerate using the device
  305.       identifiers of the USB-OTG test device.  That means that when
  306.       this gadget connects to another OTG device, with this one using
  307.       the "B-Peripheral" role, that device will use HNP to let this
  308.       one serve as the USB host instead (in the "B-Host" role).
  309.  
  310. config USB_ETH
  311.     tristate "Ethernet Gadget (with CDC Ethernet support)"
  312.     depends on NET
  313.     help
  314.       This driver implements Ethernet style communication, in either
  315.       of two ways:
  316.       
  317.        - The "Communication Device Class" (CDC) Ethernet Control Model.
  318.          That protocol is often avoided with pure Ethernet adapters, in
  319.          favor of simpler vendor-specific hardware, but is widely
  320.          supported by firmware for smart network devices.
  321.  
  322.        - On hardware can't implement that protocol, a simple CDC subset
  323.          is used, placing fewer demands on USB.
  324.  
  325.       RNDIS support is a third option, more demanding than that subset.
  326.  
  327.       Within the USB device, this gadget driver exposes a network device
  328.       "usbX", where X depends on what other networking devices you have.
  329.       Treat it like a two-node Ethernet link:  host, and gadget.
  330.  
  331.       The Linux-USB host-side "usbnet" driver interoperates with this
  332.       driver, so that deep I/O queues can be supported.  On 2.4 kernels,
  333.       use "CDCEther" instead, if you're using the CDC option. That CDC
  334.       mode should also interoperate with standard CDC Ethernet class
  335.       drivers on other host operating systems.
  336.  
  337.       Say "y" to link the driver statically, or "m" to build a
  338.       dynamically linked module called "g_ether".
  339.  
  340. config USB_ETH_RNDIS
  341.     bool "RNDIS support (EXPERIMENTAL)"
  342.     depends on USB_ETH && EXPERIMENTAL
  343.     default y
  344.     help
  345.        Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
  346.        and Microsoft provides redistributable binary RNDIS drivers for
  347.        older versions of Windows.
  348.  
  349.        If you say "y" here, the Ethernet gadget driver will try to provide
  350.        a second device configuration, supporting RNDIS to talk to such
  351.        Microsoft USB hosts.
  352.        
  353.        To make MS-Windows work with this, use Documentation/usb/linux.inf
  354.        as the "driver info file".  For versions of MS-Windows older than
  355.        XP, you'll need to download drivers from Microsoft's website; a URL
  356.        is given in comments found in that info file.
  357.  
  358. config USB_GADGETFS
  359.     tristate "Gadget Filesystem (EXPERIMENTAL)"
  360.     depends on EXPERIMENTAL
  361.     help
  362.       This driver provides a filesystem based API that lets user mode
  363.       programs implement a single-configuration USB device, including
  364.       endpoint I/O and control requests that don't relate to enumeration.
  365.       All endpoints, transfer speeds, and transfer types supported by
  366.       the hardware are available, through read() and write() calls.
  367.  
  368.       Say "y" to link the driver statically, or "m" to build a
  369.       dynamically linked module called "gadgetfs".
  370.  
  371. config USB_FILE_STORAGE
  372.     tristate "File-backed Storage Gadget"
  373.     help
  374.       The File-backed Storage Gadget acts as a USB Mass Storage
  375.       disk drive.  As its storage repository it can use a regular
  376.       file or a block device (in much the same way as the "loop"
  377.       device driver), specified as a module parameter.
  378.  
  379.       Say "y" to link the driver statically, or "m" to build a
  380.       dynamically linked module called "g_file_storage".
  381.  
  382. config USB_FILE_STORAGE_TEST
  383.     bool "File-backed Storage Gadget testing version"
  384.     depends on USB_FILE_STORAGE
  385.     default n
  386.     help
  387.       Say "y" to generate the larger testing version of the
  388.       File-backed Storage Gadget, useful for probing the
  389.       behavior of USB Mass Storage hosts.  Not needed for
  390.       normal operation.
  391.  
  392. config USB_G_SERIAL
  393.     tristate "Serial Gadget (with CDC ACM support)"
  394.     help
  395.       The Serial Gadget talks to the Linux-USB generic serial driver.
  396.       This driver supports a CDC-ACM module option, which can be used
  397.       to interoperate with MS-Windows hosts or with the Linux-USB
  398.       "cdc-acm" driver.
  399.  
  400.       Say "y" to link the driver statically, or "m" to build a
  401.       dynamically linked module called "g_serial".
  402.  
  403.       For more information, see Documentation/usb/gadget_serial.txt
  404.       which includes instructions and a "driver info file" needed to
  405.       make MS-Windows work with this driver.
  406.  
  407.  
  408. # put drivers that need isochronous transfer support (for audio
  409. # or video class gadget drivers), or specific hardware, here.
  410.  
  411. # - none yet
  412.  
  413. endchoice
  414.  
  415. endmenu
  416.