Merge 4.11-rc4 into tty-next
[linux/fpc-iii.git] / drivers / usb / gadget / udc / Kconfig
blob4b69f28a9af972dc5fc5584b9f8bbd6a38774f5a
2 # USB Gadget support on a system involves
3 #    (a) a peripheral controller, and
4 #    (b) the gadget driver using it.
6 # NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
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 controllers.
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).
17 # USB Peripheral Controller Support
19 # The order here is alphabetical, except that integrated controllers go
20 # before discrete ones so they will be the initial/default value:
21 #   - integrated/SOC controllers first
22 #   - licensed IP used in both SOC and discrete versions
23 #   - discrete ones (including all PCI-only controllers)
24 #   - debug/dummy gadget+hcd is last.
26 menu "USB Peripheral Controller"
29 # Integrated controllers
32 config USB_AT91
33         tristate "Atmel AT91 USB Device Port"
34         depends on ARCH_AT91
35         depends on OF || COMPILE_TEST
36         help
37            Many Atmel AT91 processors (such as the AT91RM2000) have a
38            full speed USB Device Port with support for five configurable
39            endpoints (plus endpoint zero).
41            Say "y" to link the driver statically, or "m" to build a
42            dynamically linked module called "at91_udc" and force all
43            gadget drivers to also be dynamically linked.
45 config USB_LPC32XX
46         tristate "LPC32XX USB Peripheral Controller"
47         depends on ARCH_LPC32XX && I2C
48         select USB_ISP1301
49         help
50            This option selects the USB device controller in the LPC32xx SoC.
52            Say "y" to link the driver statically, or "m" to build a
53            dynamically linked module called "lpc32xx_udc" and force all
54            gadget drivers to also be dynamically linked.
56 config USB_ATMEL_USBA
57         tristate "Atmel USBA"
58         depends on ((AVR32 && !OF) || ARCH_AT91)
59         help
60           USBA is the integrated high-speed USB Device controller on
61           the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel.
63           The fifo_mode parameter is used to select endpoint allocation mode.
64           fifo_mode = 0 is used to let the driver autoconfigure the endpoints.
65           In this case 2 banks are allocated for isochronous endpoints and
66           only one bank is allocated for the rest of the endpoints.
68           fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration
69           allowing the usage of ep1 - ep6
71           fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes)
72           configuration allowing the usage of ep1 - ep3
74           fifo_mode = 3 is a balanced performance configuration allowing the
75           the usage of ep1 - ep8
77 config USB_BCM63XX_UDC
78         tristate "Broadcom BCM63xx Peripheral Controller"
79         depends on BCM63XX
80         help
81            Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
82            high speed USB Device Port with support for four fixed endpoints
83            (plus endpoint zero).
85            Say "y" to link the driver statically, or "m" to build a
86            dynamically linked module called "bcm63xx_udc".
88 config USB_FSL_USB2
89         tristate "Freescale Highspeed USB DR Peripheral Controller"
90         depends on FSL_SOC || ARCH_MXC
91         help
92            Some of Freescale PowerPC and i.MX processors have a High Speed
93            Dual-Role(DR) USB controller, which supports device mode.
95            The number of programmable endpoints is different through
96            SOC revisions.
98            Say "y" to link the driver statically, or "m" to build a
99            dynamically linked module called "fsl_usb2_udc" and force
100            all gadget drivers to also be dynamically linked.
102 config USB_FUSB300
103         tristate "Faraday FUSB300 USB Peripheral Controller"
104         depends on !PHYS_ADDR_T_64BIT && HAS_DMA
105         help
106            Faraday usb device controller FUSB300 driver
108 config USB_FOTG210_UDC
109         depends on HAS_DMA
110         tristate "Faraday FOTG210 USB Peripheral Controller"
111         help
112            Faraday USB2.0 OTG controller which can be configured as
113            high speed or full speed USB device. This driver supppors
114            Bulk Transfer so far.
116            Say "y" to link the driver statically, or "m" to build a
117            dynamically linked module called "fotg210_udc".
119 config USB_GR_UDC
120        tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver"
121        depends on HAS_DMA
122        help
123           Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB
124           VHDL IP core library.
126 config USB_OMAP
127         tristate "OMAP USB Device Controller"
128         depends on ARCH_OMAP1
129         depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3)
130         help
131            Many Texas Instruments OMAP processors have flexible full
132            speed USB device controllers, with support for up to 30
133            endpoints (plus endpoint zero).  This driver supports the
134            controller in the OMAP 1611, and should work with controllers
135            in other OMAP processors too, given minor tweaks.
137            Say "y" to link the driver statically, or "m" to build a
138            dynamically linked module called "omap_udc" and force all
139            gadget drivers to also be dynamically linked.
141 config USB_PXA25X
142         tristate "PXA 25x or IXP 4xx"
143         depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
144         depends on HAS_IOMEM
145         help
146            Intel's PXA 25x series XScale ARM-5TE processors include
147            an integrated full speed USB 1.1 device controller.  The
148            controller in the IXP 4xx series is register-compatible.
150            It has fifteen fixed-function endpoints, as well as endpoint
151            zero (for control transfers).
153            Say "y" to link the driver statically, or "m" to build a
154            dynamically linked module called "pxa25x_udc" and force all
155            gadget drivers to also be dynamically linked.
157 # if there's only one gadget driver, using only two bulk endpoints,
158 # don't waste memory for the other endpoints
159 config USB_PXA25X_SMALL
160         depends on USB_PXA25X
161         bool
162         default n if USB_ETH_RNDIS
163         default y if USB_ZERO
164         default y if USB_ETH
165         default y if USB_G_SERIAL
167 config USB_R8A66597
168         tristate "Renesas R8A66597 USB Peripheral Controller"
169         depends on HAS_DMA
170         help
171            R8A66597 is a discrete USB host and peripheral controller chip that
172            supports both full and high speed USB 2.0 data transfers.
173            It has nine configurable endpoints, and endpoint zero.
175            Say "y" to link the driver statically, or "m" to build a
176            dynamically linked module called "r8a66597_udc" and force all
177            gadget drivers to also be dynamically linked.
179 config USB_RENESAS_USBHS_UDC
180         tristate 'Renesas USBHS controller'
181         depends on USB_RENESAS_USBHS && HAS_DMA
182         help
183            Renesas USBHS is a discrete USB host and peripheral controller chip
184            that supports both full and high speed USB 2.0 data transfers.
185            It has nine or more configurable endpoints, and endpoint zero.
187            Say "y" to link the driver statically, or "m" to build a
188            dynamically linked module called "renesas_usbhs" and force all
189            gadget drivers to also be dynamically linked.
191 config USB_RENESAS_USB3
192         tristate 'Renesas USB3.0 Peripheral controller'
193         depends on ARCH_RENESAS || COMPILE_TEST
194         help
195            Renesas USB3.0 Peripheral controller is a USB peripheral controller
196            that supports super, high, and full speed USB 3.0 data transfers.
198            Say "y" to link the driver statically, or "m" to build a
199            dynamically linked module called "renesas_usb3" and force all
200            gadget drivers to also be dynamically linked.
202 config USB_PXA27X
203         tristate "PXA 27x"
204         depends on HAS_IOMEM
205         help
206            Intel's PXA 27x series XScale ARM v5TE processors include
207            an integrated full speed USB 1.1 device controller.
209            It has up to 23 endpoints, as well as endpoint zero (for
210            control transfers).
212            Say "y" to link the driver statically, or "m" to build a
213            dynamically linked module called "pxa27x_udc" and force all
214            gadget drivers to also be dynamically linked.
216 config USB_S3C2410
217         tristate "S3C2410 USB Device Controller"
218         depends on ARCH_S3C24XX
219         help
220           Samsung's S3C2410 is an ARM-4 processor with an integrated
221           full speed USB 1.1 device controller.  It has 4 configurable
222           endpoints, as well as endpoint zero (for control transfers).
224           This driver has been tested on the S3C2410, S3C2412, and
225           S3C2440 processors.
227 config USB_S3C2410_DEBUG
228         bool "S3C2410 udc debug messages"
229         depends on USB_S3C2410
231 config USB_S3C_HSUDC
232         tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
233         depends on ARCH_S3C24XX
234         help
235           Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
236           integrated with dual speed USB 2.0 device controller. It has
237           8 endpoints, as well as endpoint zero.
239           This driver has been tested on S3C2416 and S3C2450 processors.
241 config USB_MV_UDC
242         tristate "Marvell USB2.0 Device Controller"
243         depends on HAS_DMA
244         help
245           Marvell Socs (including PXA and MMP series) include a high speed
246           USB2.0 OTG controller, which can be configured as high speed or
247           full speed USB peripheral.
249 config USB_MV_U3D
250         depends on HAS_DMA
251         tristate "MARVELL PXA2128 USB 3.0 controller"
252         help
253           MARVELL PXA2128 Processor series include a super speed USB3.0 device
254           controller, which support super speed USB peripheral.
257 # Controllers available in both integrated and discrete versions
260 config USB_M66592
261         tristate "Renesas M66592 USB Peripheral Controller"
262         depends on HAS_IOMEM
263         help
264            M66592 is a discrete USB peripheral controller chip that
265            supports both full and high speed USB 2.0 data transfers.
266            It has seven configurable endpoints, and endpoint zero.
268            Say "y" to link the driver statically, or "m" to build a
269            dynamically linked module called "m66592_udc" and force all
270            gadget drivers to also be dynamically linked.
272 source "drivers/usb/gadget/udc/bdc/Kconfig"
275 # Controllers available only in discrete form (and all PCI controllers)
278 config USB_AMD5536UDC
279         tristate "AMD5536 UDC"
280         depends on PCI
281         help
282            The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
283            It is a USB Highspeed DMA capable USB device controller. Beside ep0
284            it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
285            The UDC port supports OTG operation, and may be used as a host port
286            if it's not being used to implement peripheral or OTG roles.
288            Say "y" to link the driver statically, or "m" to build a
289            dynamically linked module called "amd5536udc" and force all
290            gadget drivers to also be dynamically linked.
292 config USB_FSL_QE
293         tristate "Freescale QE/CPM USB Device Controller"
294         depends on FSL_SOC && (QUICC_ENGINE || CPM)
295         help
296            Some of Freescale PowerPC processors have a Full Speed
297            QE/CPM2 USB controller, which support device mode with 4
298            programmable endpoints. This driver supports the
299            controller in the MPC8360 and MPC8272, and should work with
300            controllers having QE or CPM2, given minor tweaks.
302            Set CONFIG_USB_GADGET to "m" to build this driver as a
303            dynamically linked module called "fsl_qe_udc".
305 config USB_NET2272
306         depends on HAS_IOMEM
307         tristate "PLX NET2272"
308         help
309           PLX NET2272 is a USB peripheral controller which supports
310           both full and high speed USB 2.0 data transfers.
312           It has three configurable endpoints, as well as endpoint zero
313           (for control transfer).
314           Say "y" to link the driver statically, or "m" to build a
315           dynamically linked module called "net2272" and force all
316           gadget drivers to also be dynamically linked.
318 config USB_NET2272_DMA
319         bool "Support external DMA controller"
320         depends on USB_NET2272 && HAS_DMA
321         help
322           The NET2272 part can optionally support an external DMA
323           controller, but your board has to have support in the
324           driver itself.
326           If unsure, say "N" here.  The driver works fine in PIO mode.
328 config USB_NET2280
329         tristate "NetChip NET228x / PLX USB3x8x"
330         depends on PCI
331         help
332            NetChip 2280 / 2282 is a PCI based USB peripheral controller which
333            supports both full and high speed USB 2.0 data transfers.
335            It has six configurable endpoints, as well as endpoint zero
336            (for control transfers) and several endpoints with dedicated
337            functions.
339            PLX 2380 is a PCIe version of the PLX 2380.
341            PLX 3380 / 3382 is a PCIe based USB peripheral controller which
342            supports full, high speed USB 2.0 and super speed USB 3.0
343            data transfers.
345            It has eight configurable endpoints, as well as endpoint zero
346            (for control transfers) and several endpoints with dedicated
347            functions.
349            Say "y" to link the driver statically, or "m" to build a
350            dynamically linked module called "net2280" and force all
351            gadget drivers to also be dynamically linked.
353 config USB_GOKU
354         tristate "Toshiba TC86C001 'Goku-S'"
355         depends on PCI
356         help
357            The Toshiba TC86C001 is a PCI device which includes controllers
358            for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
360            The device controller has three configurable (bulk or interrupt)
361            endpoints, plus endpoint zero (for control transfers).
363            Say "y" to link the driver statically, or "m" to build a
364            dynamically linked module called "goku_udc" and to force all
365            gadget drivers to also be dynamically linked.
367 config USB_EG20T
368         tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
369         depends on PCI
370         help
371           This is a USB device driver for EG20T PCH.
372           EG20T PCH is the platform controller hub that is used in Intel's
373           general embedded platform. EG20T PCH has USB device interface.
374           Using this interface, it is able to access system devices connected
375           to USB device.
376           This driver enables USB device function.
377           USB device is a USB peripheral controller which
378           supports both full and high speed USB 2.0 data transfers.
379           This driver supports both control transfer and bulk transfer modes.
380           This driver dose not support interrupt transfer or isochronous
381           transfer modes.
383           This driver also can be used for LAPIS Semiconductor's ML7213 which is
384           for IVI(In-Vehicle Infotainment) use.
385           ML7831 is for general purpose use.
386           ML7213/ML7831 is companion chip for Intel Atom E6xx series.
387           ML7213/ML7831 is completely compatible for Intel EG20T PCH.
389           This driver can be used with Intel's Quark X1000 SOC platform
391 config USB_GADGET_XILINX
392         tristate "Xilinx USB Driver"
393         depends on HAS_DMA
394         depends on OF || COMPILE_TEST
395         help
396           USB peripheral controller driver for Xilinx USB2 device.
397           Xilinx USB2 device is a soft IP which supports both full
398           and high speed USB 2.0 data transfers. It has seven configurable
399           endpoints(bulk or interrupt or isochronous), as well as
400           endpoint zero(for control transfers).
402           Say "y" to link the driver statically, or "m" to build a
403           dynamically linked module called "udc-xilinx" and force all
404           gadget drivers to also be dynamically linked.
407 # LAST -- dummy/emulated controller
410 config USB_DUMMY_HCD
411         tristate "Dummy HCD (DEVELOPMENT)"
412         depends on USB=y || (USB=m && USB_GADGET=m)
413         help
414           This host controller driver emulates USB, looping all data transfer
415           requests back to a USB "gadget driver" in the same host.  The host
416           side is the master; the gadget side is the slave.  Gadget drivers
417           can be high, full, or low speed; and they have access to endpoints
418           like those from NET2280, PXA2xx, or SA1100 hardware.
420           This may help in some stages of creating a driver to embed in a
421           Linux device, since it lets you debug several parts of the gadget
422           driver without its hardware or drivers being involved.
424           Since such a gadget side driver needs to interoperate with a host
425           side Linux-USB device driver, this may help to debug both sides
426           of a USB protocol stack.
428           Say "y" to link the driver statically, or "m" to build a
429           dynamically linked module called "dummy_hcd" and force all
430           gadget drivers to also be dynamically linked.
432 # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
433 # first and will be selected by default.
435 endmenu