Prepare v2023.10
[platform/kernel/u-boot.git] / drivers / usb / host / Kconfig
1 #
2 # USB Host Controller Drivers
3 #
4 comment "USB Host Controller Drivers"
5
6 config USB_HOST
7         bool
8         select DM_USB
9         help
10           Enable access to USB (Universal Serial Bus) host devices so that
11           SPL can load U-Boot from a connected USB peripheral, such as a USB
12           flash stick. While USB takes a little longer to start up than most
13           buses, it is very flexible since many different types of storage
14           device can be attached.
15
16 config SPL_USB_HOST
17         bool "Support USB host drivers"
18         depends on SPL
19         help
20           For detailed help see USB_HOST Kconfig symbol. This option enables
21           the drivers in drivers/usb/host as part of an SPL build.
22
23 config USB_XHCI_HCD
24         bool "xHCI HCD (USB 3.0) support"
25         depends on DM && OF_CONTROL
26         select USB_HOST
27         ---help---
28           The eXtensible Host Controller Interface (xHCI) is standard for USB 3.0
29           "SuperSpeed" host controller hardware.
30
31 if USB_XHCI_HCD
32
33 config USB_XHCI_DWC3
34         bool "DesignWare USB3 DRD Core Support"
35         help
36           Say Y or if your system has a Dual Role SuperSpeed
37           USB controller based on the DesignWare USB3 IP Core.
38
39 config USB_XHCI_DWC3_OF_SIMPLE
40         bool "DesignWare USB3 DRD Generic OF Simple Glue Layer"
41         depends on DM_USB
42         default y if ARCH_ROCKCHIP
43         default y if DRA7XX
44         help
45           Support USB2/3 functionality in simple SoC integrations with
46           USB controller based on the DesignWare USB3 IP Core.
47
48 config USB_XHCI_EXYNOS
49         bool "Support for Samsung Exynos5 family on-chip xHCI USB controller"
50         depends on ARCH_EXYNOS5
51         default y
52         help
53           Enables support for he on-chip xHCI controller on Samsung Exynos5
54           SoCs.
55
56 config USB_XHCI_MTK
57         bool "Support for MediaTek on-chip xHCI USB controller"
58         depends on ARCH_MEDIATEK || SOC_MT7621
59         help
60           Enables support for the on-chip xHCI controller on MediaTek SoCs.
61
62 config USB_XHCI_MVEBU
63         bool "MVEBU USB 3.0 support"
64         default y
65         depends on ARCH_MVEBU
66         select DM_REGULATOR
67         help
68           Choose this option to add support for USB 3.0 driver on mvebu
69           SoCs, which includes Armada8K, Armada3700 and other Armada
70           family SoCs.
71
72 config USB_XHCI_OCTEON
73         bool "Support for Marvell Octeon family on-chip xHCI USB controller"
74         depends on ARCH_OCTEON
75         default y
76         help
77           Enables support for the on-chip xHCI controller on Marvell Octeon
78           family SoCs. This is a driver for the dwc3 to provide the glue logic
79           to configure the controller.
80
81 config USB_XHCI_OMAP
82         bool "Support for TI OMAP family xHCI USB controller"
83         depends on ARCH_OMAP2PLUS
84         help
85           Enables support for the on-chip xHCI controller found on some TI SoC
86           families.  Note that some families have multiple contollers while
87           others only have something such as DesignWare-based controllers.
88           Consult the SoC documentation to determine if this option applies
89           to your hardware.
90
91 config USB_XHCI_PCI
92         bool "Support for PCI-based xHCI USB controller"
93         depends on DM_USB
94         default y if X86
95         help
96           Enables support for the PCI-based xHCI controller.
97
98 config USB_XHCI_RCAR
99         bool "Renesas RCar USB 3.0 support"
100         default y
101         depends on ARCH_RMOBILE
102         help
103           Choose this option to add support for USB 3.0 driver on Renesas
104           RCar Gen3 SoCs.
105
106 config USB_XHCI_STI
107         bool "Support for STMicroelectronics STiH407 family on-chip xHCI USB controller"
108         depends on ARCH_STI
109         default y
110         help
111           Enables support for the on-chip xHCI controller on STMicroelectronics
112           STiH407 family SoCs. This is a driver for the dwc3 to provide the glue logic
113           to configure the controller.
114
115 config USB_XHCI_DRA7XX_INDEX
116         int "DRA7XX xHCI USB index"
117         range 0 1
118         default 0
119         depends on DRA7XX
120         help
121           Select the DRA7XX xHCI USB index.
122           Current supported values: 0, 1.
123
124 config USB_XHCI_FSL
125         bool "Support for NXP Layerscape on-chip xHCI USB controller"
126         default y if ARCH_LS1021A || FSL_LSCH3 || FSL_LSCH2
127         depends on !SPL_NO_USB
128         help
129           Enables support for the on-chip xHCI controller on NXP Layerscape SoCs.
130
131 config USB_XHCI_BRCM
132         bool "Broadcom USB3 Host XHCI controller"
133         depends on DM_USB
134         help
135           USB controller based on the Broadcom USB3 IP Core.
136           Supports USB2/3 functionality.
137
138 endif # USB_XHCI_HCD
139
140 config EHCI_DESC_BIG_ENDIAN
141         bool
142
143 config EHCI_MMIO_BIG_ENDIAN
144         bool
145
146 config USB_EHCI_HCD
147         bool "EHCI HCD (USB 2.0) support"
148         default y if ARCH_MX5 || ARCH_MX6
149         depends on DM && OF_CONTROL
150         select USB_HOST
151         select EHCI_DESC_BIG_ENDIAN if SYS_BIG_ENDIAN
152         select EHCI_MMIO_BIG_ENDIAN if SYS_BIG_ENDIAN
153         ---help---
154           The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0
155           "high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware.
156           If your USB host controller supports USB 2.0, you will likely want to
157           configure this Host Controller Driver.
158
159           EHCI controllers are packaged with "companion" host controllers (OHCI
160           or UHCI) to handle USB 1.1 devices connected to root hub ports.  Ports
161           will connect to EHCI if the device is high speed, otherwise they
162           connect to a companion controller.  If you configure EHCI, you should
163           probably configure the OHCI (for NEC and some other vendors) USB Host
164           Controller Driver or UHCI (for Via motherboards) Host Controller
165           Driver too.
166
167           You may want to read <file:Documentation/usb/ehci.txt>.
168
169 if USB_EHCI_HCD
170
171 config USB_EHCI_IS_TDI
172         bool
173
174 config USB_EHCI_ATMEL
175         bool  "Support for Atmel on-chip EHCI USB controller"
176         depends on ARCH_AT91
177         default y
178         ---help---
179           Enables support for the on-chip EHCI controller on Atmel chips.
180
181 config USB_EHCI_EXYNOS
182         bool "Support for Samsung Exynos EHCI USB controller"
183         depends on ARCH_EXYNOS
184         default y
185         ---help---
186           Enables support for the on-chip EHCI controller on Samsung Exynos
187           SoCs.
188
189 config USB_EHCI_MARVELL
190         bool "Support for Marvell on-chip EHCI USB controller"
191         depends on ARCH_MVEBU || ARCH_KIRKWOOD || ARCH_ORION5X
192         default y
193         select USB_EHCI_IS_TDI if !ARM64
194         select USB_EHCI_IS_TDI if ALLEYCAT_5
195         ---help---
196           Enables support for the on-chip EHCI controller on MVEBU SoCs.
197
198 config USB_EHCI_MX5
199         bool "Support for i.MX5 on-chip EHCI USB controller"
200         depends on ARCH_MX5
201         help
202           Enables support for the on-chip EHCI controller on i.MX5 SoCs.
203
204 config USB_EHCI_MX6
205         bool "Support for i.MX6/i.MX7ULP on-chip EHCI USB controller"
206         depends on ARCH_MX6 || ARCH_MX7ULP || ARCH_IMXRT
207         select EHCI_HCD_INIT_AFTER_RESET
208         default y
209         ---help---
210           Enables support for the on-chip EHCI controller on i.MX6 SoCs.
211
212 config USB_EHCI_MX7
213         bool "Support for i.MX7 on-chip EHCI USB controller"
214         depends on ARCH_MX7 || IMX8M
215         select EHCI_HCD_INIT_AFTER_RESET if ARCH_MX7
216         select PHY if IMX8M
217         select NOP_PHY if IMX8M
218         default y
219         ---help---
220           Enables support for the on-chip EHCI controller on i.MX7 SoCs.
221
222 config USB_EHCI_MXS
223         bool "Support for i.MX23/i.MX28 EHCI USB controller"
224         depends on ARCH_MX23 || ARCH_MX28
225         default y
226         select USB_EHCI_IS_TDI
227         help
228           Enables support for the on-chip EHCI controller on i.MX23 and
229           i.MX28 SoCs.
230
231 config USB_EHCI_NPCM
232         bool "Support for Nuvoton NPCM on-chip EHCI USB controller"
233         depends on ARCH_NPCM
234         default n
235         ---help---
236           Enables support for the on-chip EHCI controller on
237           Nuvoton NPCM chips.
238
239 config USB_EHCI_OMAP
240         bool "Support for OMAP3+ on-chip EHCI USB controller"
241         depends on ARCH_OMAP2PLUS
242         select PHY
243         imply NOP_PHY
244         default y
245         ---help---
246           Enables support for the on-chip EHCI controller on OMAP3 and later
247           SoCs.
248
249 config USB_EHCI_VF
250         bool "Support for Vybrid on-chip EHCI USB controller"
251         depends on ARCH_VF610
252         default y
253         help
254           Enables support for the on-chip EHCI controller on Vybrid SoCs.
255
256 if USB_EHCI_MX6 || USB_EHCI_MX7
257
258 config MXC_USB_OTG_HACTIVE
259         bool "USB Power pin high active"
260         ---help---
261           Set the USB Power pin polarity to be high active (PWR_POL)
262
263 endif
264
265 config USB_EHCI_MSM
266         bool "Support for Qualcomm on-chip EHCI USB controller"
267         depends on DM_USB
268         select USB_ULPI_VIEWPORT
269         select MSM8916_USB_PHY
270         ---help---
271           Enables support for the on-chip EHCI controller on Qualcomm
272           Snapdragon SoCs.
273
274 config USB_EHCI_PCI
275         bool "Support for PCI-based EHCI USB controller"
276         default y if X86
277         help
278           Enables support for the PCI-based EHCI controller.
279
280 config USB_EHCI_TEGRA
281         bool "Support for NVIDIA Tegra on-chip EHCI USB controller"
282         depends on ARCH_TEGRA
283         select USB_EHCI_IS_TDI
284         ---help---
285           Enable support for Tegra on-chip EHCI USB controller
286
287 config USB_EHCI_ZYNQ
288         bool "Support for Xilinx Zynq on-chip EHCI USB controller"
289         default y if ARCH_ZYNQ
290         select USB_EHCI_IS_TDI
291         ---help---
292           Enable support for Zynq on-chip EHCI USB controller
293
294 config USB_EHCI_GENERIC
295         bool "Support for generic EHCI USB controller"
296         depends on DM_USB
297         default ARCH_SUNXI
298         ---help---
299           Enables support for generic EHCI controller.
300
301 config EHCI_HCD_INIT_AFTER_RESET
302         bool
303
304 config USB_EHCI_FSL
305         bool  "Support for FSL on-chip EHCI USB controller"
306         select EHCI_HCD_INIT_AFTER_RESET
307         select SYS_FSL_USB_INTERNAL_UTMI_PHY if MPC85xx && \
308                 !(ARCH_B4860 || ARCH_B4420 || ARCH_P4080 || ARCH_P1020 || ARCH_P2020)
309         ---help---
310           Enables support for the on-chip EHCI controller on FSL chips.
311
312 config SYS_FSL_USB_INTERNAL_UTMI_PHY
313         bool
314         depends on USB_EHCI_FSL
315
316 config USB_EHCI_TXFIFO_THRESH
317         hex
318         depends on USB_EHCI_TEGRA
319         default 0x10
320         help
321           This parameter affects a TXFILLTUNING field that controls how much
322           data is sent to the latency fifo before it is sent to the wire.
323           Without this parameter, the default (2) causes occasional Data Buffer
324           Errors in OUT packets depending on the buffer address and size.
325
326 endif # USB_EHCI_HCD
327
328 config USB_OHCI_NEW
329         bool
330
331 config SYS_USB_OHCI_CPU_INIT
332         bool
333
334 config USB_OHCI_HCD
335         bool "OHCI HCD (USB 1.1) support"
336         depends on DM && OF_CONTROL
337         select USB_HOST
338         select USB_OHCI_NEW
339         ---help---
340           The Open Host Controller Interface (OHCI) is a standard for accessing
341           USB 1.1 host controller hardware.  It does more in hardware than Intel's
342           UHCI specification.  If your USB host controller follows the OHCI spec,
343           say Y.  On most non-x86 systems, and on x86 hardware that's not using a
344           USB controller from Intel or VIA, this is appropriate.  If your host
345           controller doesn't use PCI, this is probably appropriate.  For a PCI
346           based system where you're not sure, the "lspci -v" entry will list the
347           right "prog-if" for your USB controller(s):  EHCI, OHCI, or UHCI.
348
349 if USB_OHCI_HCD
350
351 config USB_OHCI_PCI
352         bool "Support for PCI-based OHCI USB controller"
353         depends on PCI
354         help
355           Enables support for the PCI-based OHCI controller.
356
357 config USB_OHCI_GENERIC
358         bool "Support for generic OHCI USB controller"
359         default ARCH_SUNXI
360         ---help---
361           Enables support for generic OHCI controller.
362
363 config USB_OHCI_DA8XX
364         bool "Support for da850 OHCI USB controller"
365         help
366           Enable support for the da850 USB controller.
367
368 config USB_OHCI_NPCM
369         bool "Support for Nuvoton NPCM on-chip OHCI USB controller"
370         depends on ARCH_NPCM
371         default n
372         ---help---
373           Enables support for the on-chip OHCI controller on
374           Nuvoton NPCM chips.
375
376 endif # USB_OHCI_HCD
377
378 config SYS_USB_OHCI_SLOT_NAME
379         string "Display name for the OHCI controller"
380         depends on USB_OHCI_NEW && !DM_USB
381
382 config SYS_OHCI_SWAP_REG_ACCESS
383         bool "Perform byte swapping on OHCI controller register accesses"
384         depends on USB_OHCI_NEW
385
386 config USB_UHCI_HCD
387         bool "UHCI HCD (most Intel and VIA) support"
388         select USB_HOST
389         ---help---
390           The Universal Host Controller Interface is a standard by Intel for
391           accessing the USB hardware in the PC (which is also called the USB
392           host controller). If your USB host controller conforms to this
393           standard, you may want to say Y, but see below. All recent boards
394           with Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,
395           i810, i820) conform to this standard. Also all VIA PCI chipsets
396           (like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro
397           133) and LEON/GRLIB SoCs with the GRUSBHC controller.
398           If unsure, say Y.
399
400 if USB_UHCI_HCD
401
402 endif # USB_UHCI_HCD
403
404 config USB_DWC2
405         bool "DesignWare USB2 Core support"
406         depends on DM && OF_CONTROL
407         select USB_HOST
408         ---help---
409           The DesignWare USB 2.0 controller is compliant with the
410           USB-Implementers Forum (USB-IF) USB 2.0 specifications.
411           Hi-Speed (480 Mbps), Full-Speed (12 Mbps), and Low-Speed (1.5 Mbps)
412           operation is compliant to the controller Supplement. If you want to
413           enable this controller in host mode, say Y.
414
415 if USB_DWC2
416 config USB_DWC2_BUFFER_SIZE
417         int "Data buffer size in kB"
418         default 64
419         ---help---
420           By default 64 kB buffer is used but if amount of RAM avaialble on
421           the target is not enough to accommodate allocation of buffer of
422           that size it is possible to shrink it. Smaller sizes should be fine
423           because larger transactions could be split in smaller ones.
424
425 endif # USB_DWC2
426
427 config USB_R8A66597_HCD
428         bool "Renesas R8A66597 USB Core support"
429         depends on DM && OF_CONTROL
430         select USB_HOST
431         ---help---
432           This enables support for the on-chip Renesas R8A66597 USB 2.0
433           controller, present in various RZ and SH SoCs.
434
435 config USB_ATMEL
436         bool "AT91 OHCI USB support"
437         depends on ARCH_AT91
438         select SYS_USB_OHCI_CPU_INIT
439         select USB_OHCI_NEW
440
441 choice
442         prompt "Clock for OHCI"
443         depends on USB_ATMEL
444
445 config USB_ATMEL_CLK_SEL_PLLB
446         bool "PLLB"
447
448 config USB_ATMEL_CLK_SEL_UPLL
449         bool "UPLL"
450
451 endchoice
452
453 config USB_OHCI_LPC32XX
454         bool "LPC32xx USB OHCI support"
455         depends on ARCH_LPC32XX
456         select SYS_USB_OHCI_CPU_INIT
457         select USB_OHCI_NEW
458
459 config USB_MAX_CONTROLLER_COUNT
460         int "Maximum number of USB host controllers"
461         depends on USB_EHCI_FSL || USB_XHCI_FSL || \
462                 (SPL_USB_HOST && !DM_SPL_USB) || (USB_HOST && !DM_USB)
463         default 1