patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / drivers / usb / gadget / Kconfig
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 #
43 # USB Peripheral Controller Support
44 #
45 choice
46         prompt "USB Peripheral Controller"
47         depends on USB_GADGET
48         help
49            A USB device uses a controller to talk to its host.
50            Systems should have only one such upstream link.
51
52 config USB_GADGET_NET2280
53         boolean "NetChip 2280"
54         depends on PCI
55         select USB_GADGET_DUALSPEED
56         help
57            NetChip 2280 is a PCI based USB peripheral controller which
58            supports both full and high speed USB 2.0 data transfers.  
59            
60            It has six configurable endpoints, as well as endpoint zero
61            (for control transfers) and several endpoints with dedicated
62            functions.
63
64            Say "y" to link the driver statically, or "m" to build a
65            dynamically linked module called "net2280" and force all
66            gadget drivers to also be dynamically linked.
67
68 config USB_NET2280
69         tristate
70         depends on USB_GADGET_NET2280
71         default USB_GADGET
72
73 config USB_GADGET_PXA2XX
74         boolean "PXA 2xx or IXP 4xx"
75         depends on ARCH_PXA || ARCH_IXP4XX
76         help
77            Intel's PXA 2xx series XScale ARM-5TE processors include
78            an integrated full speed USB 1.1 device controller.  The
79            controller in the IXP 4xx series is register-compatible.
80
81            It has fifteen fixed-function endpoints, as well as endpoint
82            zero (for control transfers).
83
84            Say "y" to link the driver statically, or "m" to build a
85            dynamically linked module called "pxa2xx_udc" and force all
86            gadget drivers to also be dynamically linked.
87
88 config USB_PXA2XX
89         tristate
90         depends on USB_GADGET_PXA2XX
91         default USB_GADGET
92
93 # if there's only one gadget driver, using only two bulk endpoints,
94 # don't waste memory for the other endpoints
95 config USB_PXA2XX_SMALL
96         depends on USB_GADGET_PXA2XX
97         bool
98         default n if USB_ETH_RNDIS
99         default y if USB_ZERO
100         default y if USB_ETH
101         default y if USB_G_SERIAL
102
103 config USB_GADGET_GOKU
104         boolean "Toshiba TC86C001 'Goku-S'"
105         depends on PCI
106         help
107            The Toshiba TC86C001 is a PCI device which includes controllers
108            for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
109            
110            The device controller has three configurable (bulk or interrupt)
111            endpoints, plus endpoint zero (for control transfers).
112
113            Say "y" to link the driver statically, or "m" to build a
114            dynamically linked module called "goku_udc" and to force all
115            gadget drivers to also be dynamically linked.
116
117 config USB_GOKU
118         tristate
119         depends on USB_GADGET_GOKU
120         default USB_GADGET
121
122 # this could be built elsewhere (doesn't yet exist)
123 config USB_GADGET_SA1100
124         boolean "SA 1100"
125         depends on ARCH_SA1100
126         help
127            Intel's SA-1100 is an ARM-4 processor with an integrated
128            full speed USB 1.1 device controller.
129
130            It has two fixed-function endpoints, as well as endpoint
131            zero (for control transfers).
132
133 config USB_SA1100
134         tristate
135         depends on USB_GADGET_SA1100
136         default USB_GADGET
137
138 config USB_GADGET_DUMMY_HCD
139         boolean "Dummy HCD (DEVELOPMENT)"
140         depends on USB && EXPERIMENTAL
141         select USB_GADGET_DUALSPEED
142         help
143           This host controller driver emulates USB, looping all data transfer
144           requests back to a USB "gadget driver" in the same host.  The host
145           side is the master; the gadget side is the slave.  Gadget drivers
146           can be high, full, or low speed; and they have access to endpoints
147           like those from NET2280, PXA2xx, or SA1100 hardware.
148           
149           This may help in some stages of creating a driver to embed in a
150           Linux device, since it lets you debug several parts of the gadget
151           driver without its hardware or drivers being involved.
152           
153           Since such a gadget side driver needs to interoperate with a host
154           side Linux-USB device driver, this may help to debug both sides
155           of a USB protocol stack.
156
157           Say "y" to link the driver statically, or "m" to build a
158           dynamically linked module called "dummy_hcd" and force all
159           gadget drivers to also be dynamically linked.
160
161 config USB_DUMMY_HCD
162         tristate
163         depends on USB_GADGET_DUMMY_HCD
164         default USB_GADGET
165
166 endchoice
167
168 config USB_GADGET_DUALSPEED
169         bool
170         depends on USB_GADGET
171         default n
172         help
173           Means that gadget drivers should include extra descriptors
174           and code to handle dual-speed controllers.
175
176 #
177 # USB Gadget Drivers
178 #
179 choice
180         tristate "USB Gadget Drivers"
181         depends on USB_GADGET
182         default USB_ETH
183
184 # this first set of drivers all depend on bulk-capable hardware.
185
186 config USB_ZERO
187         tristate "Gadget Zero (DEVELOPMENT)"
188         depends on EXPERIMENTAL
189         help
190           Gadget Zero is a two-configuration device.  It either sinks and
191           sources bulk data; or it loops back a configurable number of
192           transfers.  It also implements control requests, for "chapter 9"
193           conformance.  The driver needs only two bulk-capable endpoints, so
194           it can work on top of most device-side usb controllers.  It's
195           useful for testing, and is also a working example showing how
196           USB "gadget drivers" can be written.
197
198           Make this be the first driver you try using on top of any new
199           USB peripheral controller driver.  Then you can use host-side
200           test software, like the "usbtest" driver, to put your hardware
201           and its driver through a basic set of functional tests.
202
203           Gadget Zero also works with the host-side "usb-skeleton" driver,
204           and with many kinds of host-side test software.  You may need
205           to tweak product and vendor IDs before host software knows about
206           this device, and arrange to select an appropriate configuration.
207
208           Say "y" to link the driver statically, or "m" to build a
209           dynamically linked module called "g_zero".
210
211 config USB_ETH
212         tristate "Ethernet Gadget"
213         depends on NET
214         help
215           This driver implements Ethernet style communication, in either
216           of two ways:
217           
218            - The "Communication Device Class" (CDC) Ethernet Control Model.
219              That protocol is often avoided with pure Ethernet adapters, in
220              favor of simpler vendor-specific hardware, but is widely
221              supported by firmware for smart network devices.
222
223            - On hardware can't implement that protocol, a simple CDC subset
224              is used, placing fewer demands on USB.
225
226           RNDIS support is a third option, more demanding than that subset.
227
228           Within the USB device, this gadget driver exposes a network device
229           "usbX", where X depends on what other networking devices you have.
230           Treat it like a two-node Ethernet link:  host, and gadget.
231
232           The Linux-USB host-side "usbnet" driver interoperates with this
233           driver, so that deep I/O queues can be supported.  On 2.4 kernels,
234           use "CDCEther" instead, if you're using the CDC option. That CDC
235           mode should also interoperate with standard CDC Ethernet class
236           drivers on other host operating systems.
237
238           Say "y" to link the driver statically, or "m" to build a
239           dynamically linked module called "g_ether".
240
241 config USB_ETH_RNDIS
242         bool "RNDIS support (EXPERIMENTAL)"
243         depends on USB_ETH && EXPERIMENTAL
244         default y
245         help
246            Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
247            and Microsoft provides redistributable binary RNDIS drivers for
248            older versions of Windows.
249
250            If you say "y" here, the Ethernet gadget driver will try to provide
251            a second device configuration, supporting RNDIS to talk to such
252            Microsoft USB hosts.
253
254 config USB_GADGETFS
255         tristate "Gadget Filesystem (EXPERIMENTAL)"
256         depends on EXPERIMENTAL
257         help
258           This driver provides a filesystem based API that lets user mode
259           programs implement a single-configuration USB device, including
260           endpoint I/O and control requests that don't relate to enumeration.
261           All endpoints, transfer speeds, and transfer types supported by
262           the hardware are available, through read() and write() calls.
263
264           Say "y" to link the driver statically, or "m" to build a
265           dynamically linked module called "gadgetfs".
266
267 config USB_FILE_STORAGE
268         tristate "File-backed Storage Gadget (DEVELOPMENT)"
269         # we don't support the SA1100 because of its limitations
270         depends on USB_GADGET_SA1100 = n
271         help
272           The File-backed Storage Gadget acts as a USB Mass Storage
273           disk drive.  As its storage repository it can use a regular
274           file or a block device (in much the same way as the "loop"
275           device driver), specified as a module parameter.
276
277           Say "y" to link the driver statically, or "m" to build a
278           dynamically linked module called "g_file_storage".
279
280 config USB_FILE_STORAGE_TEST
281         bool "File-backed Storage Gadget test version"
282         depends on USB_FILE_STORAGE
283         default n
284         help
285           Say "y" to generate the larger testing version of the
286           File-backed Storage Gadget, useful for probing the
287           behavior of USB Mass Storage hosts.  Not needed for
288           normal operation.
289
290 config USB_G_SERIAL
291         tristate "Serial Gadget"
292         help
293           The Serial Gadget talks to the Linux-USB generic serial driver.
294
295           Say "y" to link the driver statically, or "m" to build a
296           dynamically linked module called "g_serial".
297
298
299
300 # put drivers that need isochronous transfer support (for audio
301 # or video class gadget drivers), or specific hardware, here.
302
303 # - none yet
304
305 endchoice
306
307 endmenu