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