1#
2# USB Host Controller Drivers
3#
4comment "USB Host Controller Drivers"
5	depends on USB
6
7config USB_C67X00_HCD
8	tristate "Cypress C67x00 HCD support"
9	depends on USB
10	help
11	  The Cypress C67x00 (EZ-Host/EZ-OTG) chips are dual-role
12	  host/peripheral/OTG USB controllers.
13
14	  Enable this option to support this chip in host controller mode.
15	  If unsure, say N.
16
17	  To compile this driver as a module, choose M here: the
18	  module will be called c67x00.
19
20config USB_XHCI_HCD
21	tristate "xHCI HCD (USB 3.0) support (EXPERIMENTAL)"
22	depends on USB && PCI && EXPERIMENTAL
23	---help---
24	  The eXtensible Host Controller Interface (xHCI) is standard for USB 3.0
25	  "SuperSpeed" host controller hardware.
26
27	  To compile this driver as a module, choose M here: the
28	  module will be called xhci-hcd.
29
30config USB_XHCI_HCD_DEBUGGING
31	bool "Debugging for the xHCI host controller"
32	depends on USB_XHCI_HCD
33	---help---
34	  Say 'Y' to turn on debugging for the xHCI host controller driver.
35	  This will spew debugging output, even in interrupt context.
36	  This should only be used for debugging xHCI driver bugs.
37
38	  If unsure, say N.
39
40config USB_EHCI_HCD
41	tristate "EHCI HCD (USB 2.0) support"
42	depends on USB && USB_ARCH_HAS_EHCI
43	---help---
44	  The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0
45	  "high speed" (480 Mbit/sec, 60 Mbyte/sec) host controller hardware.
46	  If your USB host controller supports USB 2.0, you will likely want to
47	  configure this Host Controller Driver.
48
49	  EHCI controllers are packaged with "companion" host controllers (OHCI
50	  or UHCI) to handle USB 1.1 devices connected to root hub ports.  Ports
51	  will connect to EHCI if the device is high speed, otherwise they
52	  connect to a companion controller.  If you configure EHCI, you should
53	  probably configure the OHCI (for NEC and some other vendors) USB Host
54	  Controller Driver or UHCI (for Via motherboards) Host Controller
55	  Driver too.
56
57	  You may want to read <file:Documentation/usb/ehci.txt>.
58
59	  To compile this driver as a module, choose M here: the
60	  module will be called ehci-hcd.
61
62config USB_EHCI_ROOT_HUB_TT
63	bool "Root Hub Transaction Translators"
64	depends on USB_EHCI_HCD
65	---help---
66	  Some EHCI chips have vendor-specific extensions to integrate
67	  transaction translators, so that no OHCI or UHCI companion
68	  controller is needed.  It's safe to say "y" even if your
69	  controller doesn't support this feature.
70
71	  This supports the EHCI implementation that's originally
72	  from ARC, and has since changed hands a few times.
73
74config USB_EHCI_TT_NEWSCHED
75	bool "Improved Transaction Translator scheduling"
76	depends on USB_EHCI_HCD
77	default y
78	---help---
79	  This changes the periodic scheduling code to fill more of the low
80	  and full speed bandwidth available from the Transaction Translator
81	  (TT) in USB 2.0 hubs.  Without this, only one transfer will be
82	  issued in each microframe, significantly reducing the number of
83	  periodic low/fullspeed transfers possible.
84
85	  If you have multiple periodic low/fullspeed devices connected to a
86	  highspeed USB hub which is connected to a highspeed USB Host
87	  Controller, and some of those devices will not work correctly
88	  (possibly due to "ENOSPC" or "-28" errors), say Y.  Conversely, if
89	  you have only one such device and it doesn't work, you could try
90	  saying N.
91
92	  If unsure, say Y.
93
94config USB_EHCI_HCD_PMC_MSP
95	tristate "EHCI support for on-chip PMC MSP71xx USB controller"
96	depends on USB_EHCI_HCD && MSP_HAS_USB
97	default n
98	select USB_EHCI_BIG_ENDIAN_DESC
99	select USB_EHCI_BIG_ENDIAN_MMIO
100	---help---
101		Enables support for the onchip USB controller on the PMC_MSP7100 Family SoC's.
102		If unsure, say N.
103
104config USB_EHCI_BIG_ENDIAN_MMIO
105	bool
106	depends on USB_EHCI_HCD && (PPC_CELLEB || PPC_PS3 || 440EPX || \
107				    ARCH_IXP4XX || XPS_USB_HCD_XILINX || \
108				    PPC_MPC512x || CPU_CAVIUM_OCTEON || \
109				    PMC_MSP)
110	default y
111
112config USB_EHCI_BIG_ENDIAN_DESC
113	bool
114	depends on USB_EHCI_HCD && (440EPX || ARCH_IXP4XX || XPS_USB_HCD_XILINX || \
115				    PPC_MPC512x || PMC_MSP)
116	default y
117
118config XPS_USB_HCD_XILINX
119	bool "Use Xilinx usb host EHCI controller core"
120	depends on USB_EHCI_HCD && (PPC32 || MICROBLAZE)
121	select USB_EHCI_BIG_ENDIAN_DESC
122	select USB_EHCI_BIG_ENDIAN_MMIO
123	---help---
124		Xilinx xps USB host controller core is EHCI compilant and has
125		transaction translator built-in. It can be configured to either
126		support both high speed and full speed devices, or high speed
127		devices only.
128
129config USB_FSL_MPH_DR_OF
130	tristate
131
132config USB_EHCI_FSL
133	bool "Support for Freescale on-chip EHCI USB controller"
134	depends on USB_EHCI_HCD && FSL_SOC
135	select USB_EHCI_ROOT_HUB_TT
136	select USB_FSL_MPH_DR_OF if OF
137	---help---
138	  Variation of ARC USB block used in some Freescale chips.
139
140config USB_EHCI_MXC
141	bool "Support for Freescale on-chip EHCI USB controller"
142	depends on USB_EHCI_HCD && ARCH_MXC
143	select USB_EHCI_ROOT_HUB_TT
144	---help---
145	  Variation of ARC USB block used in some Freescale chips.
146
147config USB_EHCI_HCD_OMAP
148	bool "EHCI support for OMAP3 and later chips"
149	depends on USB_EHCI_HCD && ARCH_OMAP
150	default y
151	--- help ---
152	  Enables support for the on-chip EHCI controller on
153	  OMAP3 and later chips.
154
155config USB_EHCI_MSM
156	bool "Support for MSM on-chip EHCI USB controller"
157	depends on USB_EHCI_HCD && ARCH_MSM
158	select USB_EHCI_ROOT_HUB_TT
159	select USB_MSM_OTG
160	---help---
161	  Enables support for the USB Host controller present on the
162	  Qualcomm chipsets. Root Hub has inbuilt TT.
163	  This driver depends on OTG driver for PHY initialization,
164	  clock management, powering up VBUS, and power management.
165	  This driver is not supported on boards like trout which
166	  has an external PHY.
167
168config USB_EHCI_TEGRA
169       boolean "NVIDIA Tegra HCD support"
170       depends on USB_EHCI_HCD && ARCH_TEGRA
171       select USB_EHCI_ROOT_HUB_TT
172       help
173         This driver enables support for the internal USB Host Controllers
174         found in NVIDIA Tegra SoCs. The controllers are EHCI compliant.
175
176config USB_EHCI_HCD_PPC_OF
177	bool "EHCI support for PPC USB controller on OF platform bus"
178	depends on USB_EHCI_HCD && PPC_OF
179	default y
180	---help---
181	  Enables support for the USB controller present on the PowerPC
182	  OpenFirmware platform bus.
183
184config USB_EHCI_SH
185	bool "EHCI support for SuperH USB controller"
186	depends on USB_EHCI_HCD && SUPERH
187	---help---
188	  Enables support for the on-chip EHCI controller on the SuperH.
189	  If you use the PCI EHCI controller, this option is not necessary.
190
191config USB_W90X900_EHCI
192	bool "W90X900(W90P910) EHCI support"
193	depends on USB_EHCI_HCD && ARCH_W90X900
194	---help---
195		Enables support for the W90X900 USB controller
196
197config USB_CNS3XXX_EHCI
198	bool "Cavium CNS3XXX EHCI Module"
199	depends on USB_EHCI_HCD && ARCH_CNS3XXX
200	---help---
201	  Enable support for the CNS3XXX SOC's on-chip EHCI controller.
202	  It is needed for high-speed (480Mbit/sec) USB 2.0 device
203	  support.
204
205config USB_OXU210HP_HCD
206	tristate "OXU210HP HCD support"
207	depends on USB
208	---help---
209	  The OXU210HP is an USB host/OTG/device controller. Enable this
210	  option if your board has this chip. If unsure, say N.
211
212	  This driver does not support isochronous transfers and doesn't
213	  implement OTG nor USB device controllers.
214
215	  To compile this driver as a module, choose M here: the
216	  module will be called oxu210hp-hcd.
217
218config USB_ISP116X_HCD
219	tristate "ISP116X HCD support"
220	depends on USB
221	---help---
222	  The ISP1160 and ISP1161 chips are USB host controllers. Enable this
223	  option if your board has this chip. If unsure, say N.
224
225	  This driver does not support isochronous transfers.
226
227	  To compile this driver as a module, choose M here: the
228	  module will be called isp116x-hcd.
229
230config USB_ISP1760_HCD
231	tristate "ISP 1760 HCD support"
232	depends on USB && EXPERIMENTAL
233	---help---
234	  The ISP1760 chip is a USB 2.0 host controller.
235
236	  This driver does not support isochronous transfers or OTG.
237	  This USB controller is usually attached to a non-DMA-Master
238	  capable bus. NXP's eval kit brings this chip on PCI card
239	  where the chip itself is behind a PLB to simulate such
240	  a bus.
241
242	  To compile this driver as a module, choose M here: the
243	  module will be called isp1760.
244
245config USB_ISP1362_HCD
246	tristate "ISP1362 HCD support"
247	depends on USB
248	default N
249	---help---
250	  Supports the Philips ISP1362 chip as a host controller
251
252	  This driver does not support isochronous transfers.
253
254	  To compile this driver as a module, choose M here: the
255	  module will be called isp1362-hcd.
256
257config USB_OHCI_HCD
258	tristate "OHCI HCD support"
259	depends on USB && USB_ARCH_HAS_OHCI
260	select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
261	select USB_OTG_UTILS if ARCH_OMAP
262	---help---
263	  The Open Host Controller Interface (OHCI) is a standard for accessing
264	  USB 1.1 host controller hardware.  It does more in hardware than Intel's
265	  UHCI specification.  If your USB host controller follows the OHCI spec,
266	  say Y.  On most non-x86 systems, and on x86 hardware that's not using a
267	  USB controller from Intel or VIA, this is appropriate.  If your host
268	  controller doesn't use PCI, this is probably appropriate.  For a PCI
269	  based system where you're not sure, the "lspci -v" entry will list the
270	  right "prog-if" for your USB controller(s):  EHCI, OHCI, or UHCI.
271
272	  To compile this driver as a module, choose M here: the
273	  module will be called ohci-hcd.
274
275config USB_OHCI_HCD_OMAP1
276	bool "OHCI support for OMAP1/2 chips"
277	depends on USB_OHCI_HCD && (ARCH_OMAP1 || ARCH_OMAP2)
278	default y
279	---help---
280	  Enables support for the OHCI controller on OMAP1/2 chips.
281
282config USB_OHCI_HCD_OMAP3
283	bool "OHCI support for OMAP3 and later chips"
284	depends on USB_OHCI_HCD && (ARCH_OMAP3 || ARCH_OMAP4)
285	default y
286	---help---
287	  Enables support for the on-chip OHCI controller on
288	  OMAP3 and later chips.
289
290config USB_OHCI_HCD_PPC_SOC
291	bool "OHCI support for on-chip PPC USB controller"
292	depends on USB_OHCI_HCD && (STB03xxx || PPC_MPC52xx)
293	default y
294	select USB_OHCI_BIG_ENDIAN_DESC
295	select USB_OHCI_BIG_ENDIAN_MMIO
296	---help---
297	  Enables support for the USB controller on the MPC52xx or
298	  STB03xxx processor chip.  If unsure, say Y.
299
300config USB_OHCI_HCD_PPC_OF_BE
301	bool "OHCI support for OF platform bus (big endian)"
302	depends on USB_OHCI_HCD && PPC_OF
303	select USB_OHCI_BIG_ENDIAN_DESC
304	select USB_OHCI_BIG_ENDIAN_MMIO
305	---help---
306	  Enables support for big-endian USB controllers present on the
307	  OpenFirmware platform bus.
308
309config USB_OHCI_HCD_PPC_OF_LE
310	bool "OHCI support for OF platform bus (little endian)"
311	depends on USB_OHCI_HCD && PPC_OF
312	select USB_OHCI_LITTLE_ENDIAN
313	---help---
314	  Enables support for little-endian USB controllers present on the
315	  OpenFirmware platform bus.
316
317config USB_OHCI_HCD_PPC_OF
318	bool
319	depends on USB_OHCI_HCD && PPC_OF
320	default USB_OHCI_HCD_PPC_OF_BE || USB_OHCI_HCD_PPC_OF_LE
321
322config USB_OHCI_HCD_PCI
323	bool "OHCI support for PCI-bus USB controllers"
324	depends on USB_OHCI_HCD && PCI && (STB03xxx || PPC_MPC52xx || USB_OHCI_HCD_PPC_OF)
325	default y
326	select USB_OHCI_LITTLE_ENDIAN
327	---help---
328	  Enables support for PCI-bus plug-in USB controller cards.
329	  If unsure, say Y.
330
331config USB_OHCI_HCD_SSB
332	bool "OHCI support for Broadcom SSB OHCI core"
333	depends on USB_OHCI_HCD && (SSB = y || SSB = USB_OHCI_HCD) && EXPERIMENTAL
334	default n
335	---help---
336	  Support for the Sonics Silicon Backplane (SSB) attached
337	  Broadcom USB OHCI core.
338
339	  This device is present in some embedded devices with
340	  Broadcom based SSB bus.
341
342	  If unsure, say N.
343
344config USB_OHCI_SH
345	bool "OHCI support for SuperH USB controller"
346	depends on USB_OHCI_HCD && SUPERH
347	---help---
348	  Enables support for the on-chip OHCI controller on the SuperH.
349	  If you use the PCI OHCI controller, this option is not necessary.
350
351config USB_CNS3XXX_OHCI
352	bool "Cavium CNS3XXX OHCI Module"
353	depends on USB_OHCI_HCD && ARCH_CNS3XXX
354	---help---
355	  Enable support for the CNS3XXX SOC's on-chip OHCI controller.
356	  It is needed for low-speed USB 1.0 device support.
357
358config USB_OHCI_BIG_ENDIAN_DESC
359	bool
360	depends on USB_OHCI_HCD
361	default n
362
363config USB_OHCI_BIG_ENDIAN_MMIO
364	bool
365	depends on USB_OHCI_HCD
366	default n
367
368config USB_OHCI_LITTLE_ENDIAN
369	bool
370	depends on USB_OHCI_HCD
371	default n if STB03xxx || PPC_MPC52xx
372	default y
373
374config USB_UHCI_HCD
375	tristate "UHCI HCD (most Intel and VIA) support"
376	depends on USB && PCI
377	---help---
378	  The Universal Host Controller Interface is a standard by Intel for
379	  accessing the USB hardware in the PC (which is also called the USB
380	  host controller). If your USB host controller conforms to this
381	  standard, you may want to say Y, but see below. All recent boards
382	  with Intel PCI chipsets (like intel 430TX, 440FX, 440LX, 440BX,
383	  i810, i820) conform to this standard. Also all VIA PCI chipsets
384	  (like VIA VP2, VP3, MVP3, Apollo Pro, Apollo Pro II or Apollo Pro
385	  133). If unsure, say Y.
386
387	  To compile this driver as a module, choose M here: the
388	  module will be called uhci-hcd.
389
390config USB_FHCI_HCD
391	tristate "Freescale QE USB Host Controller support"
392	depends on USB && OF_GPIO && QE_GPIO && QUICC_ENGINE
393	select FSL_GTM
394	select QE_USB
395	help
396	  This driver enables support for Freescale QE USB Host Controller
397	  (as found on MPC8360 and MPC8323 processors), the driver supports
398	  Full and Low Speed USB.
399
400config FHCI_DEBUG
401	bool "Freescale QE USB Host Controller debug support"
402	depends on USB_FHCI_HCD && DEBUG_FS
403	help
404	  Say "y" to see some FHCI debug information and statistics
405	  through debugfs.
406
407config USB_U132_HCD
408	tristate "Elan U132 Adapter Host Controller"
409	depends on USB && USB_FTDI_ELAN
410	default M
411	help
412	  The U132 adapter is a USB to CardBus adapter specifically designed
413	  for PC cards that contain an OHCI host controller. Typical PC cards
414	  are the Orange Mobile 3G Option GlobeTrotter Fusion card. The U132
415	  adapter will *NOT* work with PC cards that do not contain an OHCI
416	  controller.
417
418	  For those PC cards that contain multiple OHCI controllers only the
419	  first one is used.
420
421	  The driver consists of two modules, the "ftdi-elan" module is a
422	  USB client driver that interfaces to the FTDI chip within ELAN's
423	  USB-to-PCMCIA adapter, and this "u132-hcd" module is a USB host
424	  controller driver that talks to the OHCI controller within the
425	  CardBus cards that are inserted in the U132 adapter.
426
427	  This driver has been tested with a CardBus OHCI USB adapter, and
428	  worked with a USB PEN Drive inserted into the first USB port of
429	  the PCCARD. A rather pointless thing to do, but useful for testing.
430
431	  It is safe to say M here.
432
433	  See also <http://www.elandigitalsystems.com/support/ufaq/u132linux.php>
434
435config USB_SL811_HCD
436	tristate "SL811HS HCD support"
437	depends on USB
438	help
439	  The SL811HS is a single-port USB controller that supports either
440	  host side or peripheral side roles.  Enable this option if your
441	  board has this chip, and you want to use it as a host controller.
442	  If unsure, say N.
443
444	  To compile this driver as a module, choose M here: the
445	  module will be called sl811-hcd.
446
447config USB_SL811_CS
448	tristate "CF/PCMCIA support for SL811HS HCD"
449	depends on USB_SL811_HCD && PCMCIA
450	help
451	  Wraps a PCMCIA driver around the SL811HS HCD, supporting the RATOC
452	  REX-CFU1U CF card (often used with PDAs).  If unsure, say N.
453
454	  To compile this driver as a module, choose M here: the
455	  module will be called "sl811_cs".
456
457config USB_R8A66597_HCD
458	tristate "R8A66597 HCD support"
459	depends on USB
460	help
461	  The R8A66597 is a USB 2.0 host and peripheral controller.
462
463	  Enable this option if your board has this chip, and you want
464	  to use it as a host controller.  If unsure, say N.
465
466	  To compile this driver as a module, choose M here: the
467	  module will be called r8a66597-hcd.
468
469config USB_WHCI_HCD
470	tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)"
471	depends on EXPERIMENTAL
472	depends on PCI && USB
473	select USB_WUSB
474	select UWB_WHCI
475	help
476	  A driver for PCI-based Wireless USB Host Controllers that are
477	  compliant with the WHCI specification.
478
479	  To compile this driver a module, choose M here: the module
480	  will be called "whci-hcd".
481
482config USB_HWA_HCD
483	tristate "Host Wire Adapter (HWA) driver (EXPERIMENTAL)"
484	depends on EXPERIMENTAL
485	depends on USB
486	select USB_WUSB
487	select UWB_HWA
488	help
489	  This driver enables you to connect Wireless USB devices to
490	  your system using a Host Wire Adaptor USB dongle. This is an
491	  UWB Radio Controller and WUSB Host Controller connected to
492	  your machine via USB (specified in WUSB1.0).
493
494	  To compile this driver a module, choose M here: the module
495	  will be called "hwa-hc".
496
497config USB_IMX21_HCD
498       tristate "iMX21 HCD support"
499       depends on USB && ARM && MACH_MX21
500       help
501         This driver enables support for the on-chip USB host in the
502         iMX21 processor.
503
504         To compile this driver as a module, choose M here: the
505         module will be called "imx21-hcd".
506
507config USB_OCTEON_EHCI
508	bool "Octeon on-chip EHCI support"
509	depends on USB && USB_EHCI_HCD && CPU_CAVIUM_OCTEON
510	default n
511	select USB_EHCI_BIG_ENDIAN_MMIO
512	help
513	  Enable support for the Octeon II SOC's on-chip EHCI
514	  controller.  It is needed for high-speed (480Mbit/sec)
515	  USB 2.0 device support.  All CN6XXX based chips with USB are
516	  supported.
517
518config USB_OCTEON_OHCI
519	bool "Octeon on-chip OHCI support"
520	depends on USB && USB_OHCI_HCD && CPU_CAVIUM_OCTEON
521	default USB_OCTEON_EHCI
522	select USB_OHCI_BIG_ENDIAN_MMIO
523	select USB_OHCI_LITTLE_ENDIAN
524	help
525	  Enable support for the Octeon II SOC's on-chip OHCI
526	  controller.  It is needed for low-speed USB 1.0 device
527	  support.  All CN6XXX based chips with USB are supported.
528
529config USB_OCTEON2_COMMON
530	bool
531	default y if USB_OCTEON_EHCI || USB_OCTEON_OHCI
532