be5e4b994da8e9036e3a6e20704d14579d3ac829
[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_MTK
36         bool "Support for MediaTek on-chip xHCI USB controller"
37         depends on ARCH_MEDIATEK
38         help
39           Enables support for the on-chip xHCI controller on MediaTek SoCs.
40
41 config USB_XHCI_MVEBU
42         bool "MVEBU USB 3.0 support"
43         default y
44         depends on ARCH_MVEBU
45         select DM_REGULATOR
46         help
47           Choose this option to add support for USB 3.0 driver on mvebu
48           SoCs, which includes Armada8K, Armada3700 and other Armada
49           family SoCs.
50
51 config USB_XHCI_OCTEON
52         bool "Support for Marvell Octeon family on-chip xHCI USB controller"
53         depends on ARCH_OCTEON
54         default y
55         help
56           Enables support for the on-chip xHCI controller on Marvell Octeon
57           family SoCs. This is a driver for the dwc3 to provide the glue logic
58           to configure the controller.
59
60 config USB_XHCI_OMAP
61         bool "Support for TI OMAP family xHCI USB controller"
62         depends on ARCH_OMAP2PLUS
63         help
64           Enables support for the on-chip xHCI controller found on some TI SoC
65           families.  Note that some families have multiple contollers while
66           others only have something such as DesignWare-based controllers.
67           Consult the SoC documentation to determine if this option applies
68           to your hardware.
69
70 config USB_XHCI_PCI
71         bool "Support for PCI-based xHCI USB controller"
72         depends on DM_USB
73         default y if X86
74         help
75           Enables support for the PCI-based xHCI controller.
76
77 config USB_XHCI_RCAR
78         bool "Renesas RCar USB 3.0 support"
79         default y
80         depends on ARCH_RMOBILE
81         help
82           Choose this option to add support for USB 3.0 driver on Renesas
83           RCar Gen3 SoCs.
84
85 config USB_XHCI_STI
86         bool "Support for STMicroelectronics STiH407 family on-chip xHCI USB controller"
87         depends on ARCH_STI
88         default y
89         help
90           Enables support for the on-chip xHCI controller on STMicroelectronics
91           STiH407 family SoCs. This is a driver for the dwc3 to provide the glue logic
92           to configure the controller.
93
94 config USB_XHCI_DRA7XX_INDEX
95         int "DRA7XX xHCI USB index"
96         range 0 1
97         default 0
98         depends on DRA7XX
99         help
100           Select the DRA7XX xHCI USB index.
101           Current supported values: 0, 1.
102
103 config USB_XHCI_FSL
104         bool "Support for NXP Layerscape on-chip xHCI USB controller"
105         default y if ARCH_LS1021A || FSL_LSCH3 || FSL_LSCH2
106         depends on !SPL_NO_USB
107         help
108           Enables support for the on-chip xHCI controller on NXP Layerscape SoCs.
109
110 config USB_XHCI_BRCM
111         bool "Broadcom USB3 Host XHCI controller"
112         depends on DM_USB
113         help
114           USB controller based on the Broadcom USB3 IP Core.
115           Supports USB2/3 functionality.
116
117 endif # USB_XHCI_HCD
118
119 config USB_EHCI_HCD
120         bool "EHCI HCD (USB 2.0) support"
121         default y if ARCH_MX5 || ARCH_MX6
122         depends on DM && OF_CONTROL
123         select USB_HOST
124         ---help---
125           The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0
126           "high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware.
127           If your USB host controller supports USB 2.0, you will likely want to
128           configure this Host Controller Driver.
129
130           EHCI controllers are packaged with "companion" host controllers (OHCI
131           or UHCI) to handle USB 1.1 devices connected to root hub ports.  Ports
132           will connect to EHCI if the device is high speed, otherwise they
133           connect to a companion controller.  If you configure EHCI, you should
134           probably configure the OHCI (for NEC and some other vendors) USB Host
135           Controller Driver or UHCI (for Via motherboards) Host Controller
136           Driver too.
137
138           You may want to read <file:Documentation/usb/ehci.txt>.
139
140 if USB_EHCI_HCD
141
142 config USB_EHCI_ATMEL
143         bool  "Support for Atmel on-chip EHCI USB controller"
144         depends on ARCH_AT91
145         default y
146         ---help---
147           Enables support for the on-chip EHCI controller on Atmel chips.
148
149 config USB_EHCI_MARVELL
150         bool "Support for Marvell on-chip EHCI USB controller"
151         depends on ARCH_MVEBU || ARCH_KIRKWOOD || ARCH_ORION5X
152         default y
153         ---help---
154           Enables support for the on-chip EHCI controller on MVEBU SoCs.
155
156 config USB_EHCI_MX5
157         bool "Support for i.MX5 on-chip EHCI USB controller"
158         depends on ARCH_MX5
159         help
160           Enables support for the on-chip EHCI controller on i.MX5 SoCs.
161
162 config USB_EHCI_MX6
163         bool "Support for i.MX6/i.MX7ULP on-chip EHCI USB controller"
164         depends on ARCH_MX6 || ARCH_MX7ULP || ARCH_IMXRT
165         default y
166         ---help---
167           Enables support for the on-chip EHCI controller on i.MX6 SoCs.
168
169 config USB_EHCI_MX7
170         bool "Support for i.MX7 on-chip EHCI USB controller"
171         depends on ARCH_MX7 || IMX8M
172         select PHY if IMX8M
173         select NOP_PHY if IMX8M
174         default y
175         ---help---
176           Enables support for the on-chip EHCI controller on i.MX7 SoCs.
177
178 config USB_EHCI_MXS
179         bool "Support for i.MX23 EHCI USB controller"
180         depends on ARCH_MX23
181         default y
182         help
183           Enables support for the on-chip EHCI controller on i.MX23 SoCs.
184
185 config USB_EHCI_OMAP
186         bool "Support for OMAP3+ on-chip EHCI USB controller"
187         depends on ARCH_OMAP2PLUS
188         default y
189         ---help---
190           Enables support for the on-chip EHCI controller on OMAP3 and later
191           SoCs.
192
193 if USB_EHCI_OMAP
194
195 config HAS_OMAP_EHCI_PHY1_RESET_GPIO
196         bool "PHY #1 requires a GPIO hold to it in RESET while PHY settles"
197         help
198           Enable this to be able to configure the GPIO number used to hold the
199           PHY in RESET for enough time until the PHY is settled and ready.
200
201 config OMAP_EHCI_PHY1_RESET_GPIO
202         int "GPIO number to hold PHY #1 in RESET"
203         depends on HAS_OMAP_EHCI_PHY1_RESET_GPIO
204
205 config HAS_OMAP_EHCI_PHY2_RESET_GPIO
206         bool "PHY #2 requires a GPIO hold to it in RESET while PHY settles"
207         help
208           Enable this to be able to configure the GPIO number used to hold the
209           PHY in RESET for enough time until the PHY is settled and ready.
210
211 config OMAP_EHCI_PHY2_RESET_GPIO
212         int "GPIO number to hold PHY #2 in RESET"
213         depends on HAS_OMAP_EHCI_PHY2_RESET_GPIO
214
215 config HAS_OMAP_EHCI_PHY3_RESET_GPIO
216         bool "PHY #3 requires a GPIO hold to it in RESET while PHY settles"
217         help
218           Enable this to be able to configure the GPIO number used to hold the
219           PHY in RESET for enough time until the PHY is settled and ready.
220
221 config OMAP_EHCI_PHY3_RESET_GPIO
222         int "GPIO number to hold PHY #3 in RESET"
223         depends on HAS_OMAP_EHCI_PHY3_RESET_GPIO
224
225 endif
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         ---help---
262           Enable support for Tegra on-chip EHCI USB controller
263
264 config USB_EHCI_ZYNQ
265         bool "Support for Xilinx Zynq on-chip EHCI USB controller"
266         default y if ARCH_ZYNQ
267         ---help---
268           Enable support for Zynq on-chip EHCI USB controller
269
270 config USB_EHCI_GENERIC
271         bool "Support for generic EHCI USB controller"
272         depends on DM_USB
273         default ARCH_SUNXI
274         ---help---
275           Enables support for generic EHCI controller.
276
277 config USB_EHCI_FSL
278         bool  "Support for FSL on-chip EHCI USB controller"
279         select  CONFIG_EHCI_HCD_INIT_AFTER_RESET
280         ---help---
281           Enables support for the on-chip EHCI controller on FSL chips.
282 endif # USB_EHCI_HCD
283
284 config USB_OHCI_HCD
285         bool "OHCI HCD (USB 1.1) support"
286         depends on DM && OF_CONTROL
287         select USB_HOST
288         ---help---
289           The Open Host Controller Interface (OHCI) is a standard for accessing
290           USB 1.1 host controller hardware.  It does more in hardware than Intel's
291           UHCI specification.  If your USB host controller follows the OHCI spec,
292           say Y.  On most non-x86 systems, and on x86 hardware that's not using a
293           USB controller from Intel or VIA, this is appropriate.  If your host
294           controller doesn't use PCI, this is probably appropriate.  For a PCI
295           based system where you're not sure, the "lspci -v" entry will list the
296           right "prog-if" for your USB controller(s):  EHCI, OHCI, or UHCI.
297
298 if USB_OHCI_HCD
299
300 config USB_OHCI_PCI
301         bool "Support for PCI-based OHCI USB controller"
302         depends on PCI
303         help
304           Enables support for the PCI-based OHCI controller.
305
306 config USB_OHCI_GENERIC
307         bool "Support for generic OHCI USB controller"
308         default ARCH_SUNXI
309         ---help---
310           Enables support for generic OHCI controller.
311
312 config USB_OHCI_DA8XX
313         bool "Support for da850 OHCI USB controller"
314         help
315           Enable support for the da850 USB controller.
316
317 endif # USB_OHCI_HCD
318
319 config USB_UHCI_HCD
320         bool "UHCI HCD (most Intel and VIA) support"
321         select USB_HOST
322         ---help---
323           The Universal Host Controller Interface is a standard by Intel for
324           accessing the USB hardware in the PC (which is also called the USB
325           host controller). If your USB host controller conforms to this
326           standard, you may want to say Y, but see below. All recent boards
327           with Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,
328           i810, i820) conform to this standard. Also all VIA PCI chipsets
329           (like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro
330           133) and LEON/GRLIB SoCs with the GRUSBHC controller.
331           If unsure, say Y.
332
333 if USB_UHCI_HCD
334
335 endif # USB_UHCI_HCD
336
337 config USB_DWC2
338         bool "DesignWare USB2 Core support"
339         depends on DM && OF_CONTROL
340         select USB_HOST
341         ---help---
342           The DesignWare USB 2.0 controller is compliant with the
343           USB-Implementers Forum (USB-IF) USB 2.0 specifications.
344           Hi-Speed (480 Mbps), Full-Speed (12 Mbps), and Low-Speed (1.5 Mbps)
345           operation is compliant to the controller Supplement. If you want to
346           enable this controller in host mode, say Y.
347
348 if USB_DWC2
349 config USB_DWC2_BUFFER_SIZE
350         int "Data buffer size in kB"
351         default 64
352         ---help---
353           By default 64 kB buffer is used but if amount of RAM avaialble on
354           the target is not enough to accommodate allocation of buffer of
355           that size it is possible to shrink it. Smaller sizes should be fine
356           because larger transactions could be split in smaller ones.
357
358 endif # USB_DWC2
359
360 config USB_R8A66597_HCD
361         bool "Renesas R8A66597 USB Core support"
362         depends on DM && OF_CONTROL
363         select USB_HOST
364         ---help---
365           This enables support for the on-chip Renesas R8A66597 USB 2.0
366           controller, present in various RZ and SH SoCs.