]> Git Repo - linux.git/blob - drivers/usb/gadget/udc/Kconfig
net/sched: Retire dsmark qdisc
[linux.git] / drivers / usb / gadget / udc / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # USB Gadget support on a system involves
4 #    (a) a peripheral controller, and
5 #    (b) the gadget driver using it.
6 #
7 # NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
8 #
9 #  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
10 #  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
11 #  - Some systems have both kinds of controllers.
12 #
13 # With help from a special transceiver and a "Mini-AB" jack, systems with
14 # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
15 #
16
17 #
18 # USB Peripheral Controller Support
19 #
20 # The order here is alphabetical, except that integrated controllers go
21 # before discrete ones so they will be the initial/default value:
22 #   - integrated/SOC controllers first
23 #   - licensed IP used in both SOC and discrete versions
24 #   - discrete ones (including all PCI-only controllers)
25 #   - debug/dummy gadget+hcd is last.
26 #
27 menu "USB Peripheral Controller"
28
29 #
30 # Integrated controllers
31 #
32
33 config USB_AT91
34         tristate "Atmel AT91 USB Device Port"
35         depends on ARCH_AT91
36         depends on OF
37         help
38            Many Atmel AT91 processors (such as the AT91RM2000) have a
39            full speed USB Device Port with support for five configurable
40            endpoints (plus endpoint zero).
41
42            Say "y" to link the driver statically, or "m" to build a
43            dynamically linked module called "at91_udc" and force all
44            gadget drivers to also be dynamically linked.
45
46 config USB_LPC32XX
47         tristate "LPC32XX USB Peripheral Controller"
48         depends on ARCH_LPC32XX || COMPILE_TEST
49         depends on I2C
50         select USB_ISP1301
51         help
52            This option selects the USB device controller in the LPC32xx SoC.
53
54            Say "y" to link the driver statically, or "m" to build a
55            dynamically linked module called "lpc32xx_udc" and force all
56            gadget drivers to also be dynamically linked.
57
58 config USB_ATMEL_USBA
59         tristate "Atmel USBA"
60         depends on ARCH_AT91
61         help
62           USBA is the integrated high-speed USB Device controller on some
63           AT91SAM9 and AT91CAP9 processors from Atmel.
64
65           The fifo_mode parameter is used to select endpoint allocation mode.
66           fifo_mode = 0 is used to let the driver autoconfigure the endpoints.
67           In this case, for ep1 2 banks are allocated if it works in isochronous
68           mode and only 1 bank otherwise. For the rest of the endpoints
69           only 1 bank is allocated.
70
71           fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration
72           allowing the usage of ep1 - ep6
73
74           fifo_mode = 2 is a generic performance maximum fifo size (1024 bytes)
75           configuration allowing the usage of ep1 - ep3
76
77           fifo_mode = 3 is a balanced performance configuration allowing the
78           the usage of ep1 - ep8
79
80 config USB_BCM63XX_UDC
81         tristate "Broadcom BCM63xx Peripheral Controller"
82         depends on BCM63XX
83         help
84            Many Broadcom BCM63xx chipsets (such as the BCM6328) have a
85            high speed USB Device Port with support for four fixed endpoints
86            (plus endpoint zero).
87
88            Say "y" to link the driver statically, or "m" to build a
89            dynamically linked module called "bcm63xx_udc".
90
91 config USB_FSL_USB2
92         tristate "Freescale Highspeed USB DR Peripheral Controller"
93         depends on FSL_SOC
94         help
95            Some of Freescale PowerPC and i.MX processors have a High Speed
96            Dual-Role(DR) USB controller, which supports device mode.
97
98            The number of programmable endpoints is different through
99            SOC revisions.
100
101            Say "y" to link the driver statically, or "m" to build a
102            dynamically linked module called "fsl_usb2_udc" and force
103            all gadget drivers to also be dynamically linked.
104
105 config USB_FUSB300
106         tristate "Faraday FUSB300 USB Peripheral Controller"
107         depends on !PHYS_ADDR_T_64BIT && HAS_DMA
108         help
109            Faraday usb device controller FUSB300 driver
110
111 config USB_GR_UDC
112         tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver"
113         depends on HAS_DMA
114         help
115           Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB
116           VHDL IP core library.
117
118 config USB_OMAP
119         tristate "OMAP USB Device Controller"
120         depends on ARCH_OMAP1
121         depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3)
122         help
123            Many Texas Instruments OMAP processors have flexible full
124            speed USB device controllers, with support for up to 30
125            endpoints (plus endpoint zero).  This driver supports the
126            controller in the OMAP 1611, and should work with controllers
127            in other OMAP processors too, given minor tweaks.
128
129            Say "y" to link the driver statically, or "m" to build a
130            dynamically linked module called "omap_udc" and force all
131            gadget drivers to also be dynamically linked.
132
133 config USB_PXA25X
134         tristate "PXA 25x or IXP 4xx"
135         depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX
136         depends on HAS_IOMEM
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
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_RENESAS_USB3
184         tristate 'Renesas USB3.0 Peripheral controller'
185         depends on ARCH_RENESAS || COMPILE_TEST
186         depends on EXTCON
187         select USB_ROLE_SWITCH
188         help
189            Renesas USB3.0 Peripheral controller is a USB peripheral controller
190            that supports super, high, and full speed USB 3.0 data transfers.
191
192            Say "y" to link the driver statically, or "m" to build a
193            dynamically linked module called "renesas_usb3" and force all
194            gadget drivers to also be dynamically linked.
195
196 config USB_PXA27X
197         tristate "PXA 27x"
198         depends on HAS_IOMEM
199         help
200            Intel's PXA 27x series XScale ARM v5TE processors include
201            an integrated full speed USB 1.1 device controller.
202
203            It has up to 23 endpoints, as well as endpoint zero (for
204            control transfers).
205
206            Say "y" to link the driver statically, or "m" to build a
207            dynamically linked module called "pxa27x_udc" and force all
208            gadget drivers to also be dynamically linked.
209
210 config USB_S3C2410
211         tristate "S3C2410 USB Device Controller"
212         depends on ARCH_S3C24XX
213         help
214           Samsung's S3C2410 is an ARM-4 processor with an integrated
215           full speed USB 1.1 device controller.  It has 4 configurable
216           endpoints, as well as endpoint zero (for control transfers).
217
218           This driver has been tested on the S3C2410, S3C2412, and
219           S3C2440 processors.
220
221 config USB_S3C2410_DEBUG
222         bool "S3C2410 udc debug messages"
223         depends on USB_S3C2410
224
225 config USB_S3C_HSUDC
226         tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
227         depends on ARCH_S3C24XX
228         help
229           Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
230           integrated with dual speed USB 2.0 device controller. It has
231           8 endpoints, as well as endpoint zero.
232
233           This driver has been tested on S3C2416 and S3C2450 processors.
234
235 config USB_MV_UDC
236         tristate "Marvell USB2.0 Device Controller"
237         depends on HAS_DMA
238         help
239           Marvell Socs (including PXA and MMP series) include a high speed
240           USB2.0 OTG controller, which can be configured as high speed or
241           full speed USB peripheral.
242
243 config USB_MV_U3D
244         depends on HAS_DMA
245         tristate "MARVELL PXA2128 USB 3.0 controller"
246         help
247           MARVELL PXA2128 Processor series include a super speed USB3.0 device
248           controller, which support super speed USB peripheral.
249
250 config USB_SNP_CORE
251         depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT)
252         depends on HAS_DMA
253         tristate
254         help
255           This enables core driver support for Synopsys USB 2.0 Device
256           controller.
257
258           This will be enabled when PCI or Platform driver for this UDC is
259           selected. Currently, this will be enabled by USB_SNP_UDC_PLAT or
260           USB_AMD5536UDC options.
261
262           This IP is different to the High Speed OTG IP that can be enabled
263           by selecting USB_DWC2 or USB_DWC3 options.
264
265 config USB_SNP_UDC_PLAT
266         tristate "Synopsys USB 2.0 Device controller"
267         depends on USB_GADGET && OF && HAS_DMA
268         depends on EXTCON || EXTCON=n
269         select USB_SNP_CORE
270         default ARCH_BCM_IPROC
271         help
272           This adds Platform Device support for Synopsys Designware core
273           AHB subsystem USB2.0 Device Controller (UDC).
274
275           This driver works with UDCs integrated into Broadcom's Northstar2
276           and Cygnus SoCs.
277
278           If unsure, say N.
279 #
280 # Controllers available in both integrated and discrete versions
281 #
282
283 config USB_M66592
284         tristate "Renesas M66592 USB Peripheral Controller"
285         depends on HAS_IOMEM
286         help
287            M66592 is a discrete USB peripheral controller chip that
288            supports both full and high speed USB 2.0 data transfers.
289            It has seven configurable endpoints, and endpoint zero.
290
291            Say "y" to link the driver statically, or "m" to build a
292            dynamically linked module called "m66592_udc" and force all
293            gadget drivers to also be dynamically linked.
294
295 source "drivers/usb/gadget/udc/bdc/Kconfig"
296
297 #
298 # Controllers available only in discrete form (and all PCI controllers)
299 #
300
301 config USB_AMD5536UDC
302         tristate "AMD5536 UDC"
303         depends on USB_PCI && HAS_DMA
304         select USB_SNP_CORE
305         help
306            The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
307            It is a USB Highspeed DMA capable USB device controller. Beside ep0
308            it provides 4 IN and 4 OUT endpoints (bulk or interrupt type).
309            The UDC port supports OTG operation, and may be used as a host port
310            if it's not being used to implement peripheral or OTG roles.
311
312            This UDC is based on Synopsys USB device controller IP and selects
313            CONFIG_USB_SNP_CORE option to build the core driver.
314
315            Say "y" to link the driver statically, or "m" to build a
316            dynamically linked module called "amd5536udc" and force all
317            gadget drivers to also be dynamically linked.
318
319 config USB_FSL_QE
320         tristate "Freescale QE/CPM USB Device Controller"
321         depends on FSL_SOC && (QUICC_ENGINE || CPM)
322         depends on !64BIT || BROKEN
323         help
324            Some of Freescale PowerPC processors have a Full Speed
325            QE/CPM2 USB controller, which support device mode with 4
326            programmable endpoints. This driver supports the
327            controller in the MPC8360 and MPC8272, and should work with
328            controllers having QE or CPM2, given minor tweaks.
329
330            Set CONFIG_USB_GADGET to "m" to build this driver as a
331            dynamically linked module called "fsl_qe_udc".
332
333 config USB_NET2272
334         depends on HAS_IOMEM
335         tristate "PLX NET2272"
336         help
337           PLX NET2272 is a USB peripheral controller which supports
338           both full and high speed USB 2.0 data transfers.
339
340           It has three configurable endpoints, as well as endpoint zero
341           (for control transfer).
342           Say "y" to link the driver statically, or "m" to build a
343           dynamically linked module called "net2272" and force all
344           gadget drivers to also be dynamically linked.
345
346 config USB_NET2272_DMA
347         bool "Support external DMA controller"
348         depends on USB_NET2272 && HAS_DMA
349         help
350           The NET2272 part can optionally support an external DMA
351           controller, but your board has to have support in the
352           driver itself.
353
354           If unsure, say "N" here.  The driver works fine in PIO mode.
355
356 config USB_NET2280
357         tristate "NetChip NET228x / PLX USB3x8x"
358         depends on USB_PCI
359         help
360            NetChip 2280 / 2282 is a PCI based USB peripheral controller which
361            supports both full and high speed USB 2.0 data transfers.
362
363            It has six configurable endpoints, as well as endpoint zero
364            (for control transfers) and several endpoints with dedicated
365            functions.
366
367            PLX 2380 is a PCIe version of the PLX 2380.
368
369            PLX 3380 / 3382 is a PCIe based USB peripheral controller which
370            supports full, high speed USB 2.0 and super speed USB 3.0
371            data transfers.
372
373            It has eight configurable endpoints, as well as endpoint zero
374            (for control transfers) and several endpoints with dedicated
375            functions.
376
377            Say "y" to link the driver statically, or "m" to build a
378            dynamically linked module called "net2280" and force all
379            gadget drivers to also be dynamically linked.
380
381 config USB_GOKU
382         tristate "Toshiba TC86C001 'Goku-S'"
383         depends on USB_PCI
384         help
385            The Toshiba TC86C001 is a PCI device which includes controllers
386            for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI).
387
388            The device controller has three configurable (bulk or interrupt)
389            endpoints, plus endpoint zero (for control transfers).
390
391            Say "y" to link the driver statically, or "m" to build a
392            dynamically linked module called "goku_udc" and to force all
393            gadget drivers to also be dynamically linked.
394
395 config USB_EG20T
396         tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
397         depends on USB_PCI
398         help
399           This is a USB device driver for EG20T PCH.
400           EG20T PCH is the platform controller hub that is used in Intel's
401           general embedded platform. EG20T PCH has USB device interface.
402           Using this interface, it is able to access system devices connected
403           to USB device.
404           This driver enables USB device function.
405           USB device is a USB peripheral controller which
406           supports both full and high speed USB 2.0 data transfers.
407           This driver supports both control transfer and bulk transfer modes.
408           This driver dose not support interrupt transfer or isochronous
409           transfer modes.
410
411           This driver also can be used for LAPIS Semiconductor's ML7213 which is
412           for IVI(In-Vehicle Infotainment) use.
413           ML7831 is for general purpose use.
414           ML7213/ML7831 is companion chip for Intel Atom E6xx series.
415           ML7213/ML7831 is completely compatible for Intel EG20T PCH.
416
417           This driver can be used with Intel's Quark X1000 SOC platform
418
419 config USB_GADGET_XILINX
420         tristate "Xilinx USB Driver"
421         depends on HAS_DMA
422         depends on OF
423         help
424           USB peripheral controller driver for Xilinx USB2 device.
425           Xilinx USB2 device is a soft IP which supports both full
426           and high speed USB 2.0 data transfers. It has seven configurable
427           endpoints(bulk or interrupt or isochronous), as well as
428           endpoint zero(for control transfers).
429
430           Say "y" to link the driver statically, or "m" to build a
431           dynamically linked module called "udc-xilinx" and force all
432           gadget drivers to also be dynamically linked.
433
434 config USB_MAX3420_UDC
435         tristate "MAX3420 (USB-over-SPI) support"
436         depends on SPI
437         help
438           The Maxim MAX3420 chip supports USB2.0 full-speed peripheral mode.
439           The MAX3420 is run by SPI interface, and hence the dependency.
440
441           To compile this driver as a module, choose M here: the module will
442           be called max3420_udc
443
444 config USB_TEGRA_XUDC
445         tristate "NVIDIA Tegra Superspeed USB 3.0 Device Controller"
446         depends on ARCH_TEGRA || COMPILE_TEST
447         depends on PHY_TEGRA_XUSB
448         help
449          Enables NVIDIA Tegra USB 3.0 device mode controller driver.
450
451          Say "y" to link the driver statically, or "m" to build a
452          dynamically linked module called "tegra_xudc" and force all
453          gadget drivers to also be dynamically linked.
454
455 config USB_ASPEED_UDC
456         tristate "Aspeed UDC driver support"
457         depends on ARCH_ASPEED || COMPILE_TEST
458         depends on USB_LIBCOMPOSITE
459         help
460           Enables Aspeed USB2.0 Device Controller driver for AST260x
461           family SoCs. The controller supports 1 control endpoint and
462           4 programmable endpoints.
463
464           Say "y" to link the driver statically, or "m" to build a
465           dynamically linked module called "aspeed_udc" and force all
466           gadget drivers to also be dynamically linked.
467
468 source "drivers/usb/gadget/udc/aspeed-vhub/Kconfig"
469
470 #
471 # LAST -- dummy/emulated controller
472 #
473
474 config USB_DUMMY_HCD
475         tristate "Dummy HCD (DEVELOPMENT)"
476         depends on USB=y || (USB=m && USB_GADGET=m)
477         help
478           This host controller driver emulates USB, looping all data transfer
479           requests back to a USB "gadget driver" in the same host.  The host
480           side is the controller; the gadget side is the device.  Gadget drivers
481           can be high, full, or low speed; and they have access to endpoints
482           like those from NET2280, PXA2xx, or SA1100 hardware.
483
484           This may help in some stages of creating a driver to embed in a
485           Linux device, since it lets you debug several parts of the gadget
486           driver without its hardware or drivers being involved.
487
488           Since such a gadget side driver needs to interoperate with a host
489           side Linux-USB device driver, this may help to debug both sides
490           of a USB protocol stack.
491
492           Say "y" to link the driver statically, or "m" to build a
493           dynamically linked module called "dummy_hcd" and force all
494           gadget drivers to also be dynamically linked.
495
496 # NOTE:  Please keep dummy_hcd LAST so that "real hardware" appears
497 # first and will be selected by default.
498
499 endmenu
This page took 0.067287 seconds and 4 git commands to generate.