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