linux/drivers/usb/host
Mike Nuss 89a0fd18a9 USB: OHCI handles more ZFMicro quirks
The ZF Micro OHCI controller exhibits unexpected behavior that seems to be
related to high load.  Under certain conditions, the controller will
complete a TD, remove it from the endpoint's queue, and fail to add it to
the donelist. This causes the endpoint to appear to stop responding. Worse,
if the device is removed while in that state, OHCI will hang while waiting
for the orphaned TD to complete.  The situation is not recoverable without
rebooting.

This fix enhances the scope of the existing OHCI_QUIRK_ZFMICRO flag:

 1. A watchdog routine periodically scans the OHCI structures to check
    for orphaned TDs. In these cases the TD is taken back from the
    controller and completed normally.

 2. If a device is removed while the endpoint is hung but before the
    watchdog catches the situation, any outstanding TDs are taken back
    from the controller in the 'sanitize' phase.

The ohci-hcd driver used to print "INTR_SF lossage" in this situation;
this changes it to the universally accurate "ED unlink timeout".  Other
instances of this message presumably have different root causes.

Both this Compaq quirk and a NEC quirk are now properly compiled out for
non-PCI builds of this driver.

Signed-off-by: Mike Nuss <mike@terascala.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-10-12 14:54:59 -07:00
..
Kconfig usb: typo in usb R8A66597 HCD config 2007-08-22 14:27:49 -07:00
Makefile USB: r8a66597-hcd: host controller driver for R8A66597 2007-07-12 16:29:45 -07:00
ehci-au1xxx.c USB: make EHCI initialize properly on PPC SOCs 2007-08-22 14:28:01 -07:00
ehci-dbg.c USB: use function attribute __maybe_unused 2007-07-12 16:29:50 -07:00
ehci-fsl.c USB: ehci_fsl update for MPC831x support 2007-07-12 16:29:50 -07:00
ehci-fsl.h ehci-fsl: fix cache coherency problem on system with large memory 2007-05-23 20:14:15 -07:00
ehci-hcd.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-hub.c USB: Don't resume root hub if the controller is suspended 2007-07-12 16:34:39 -07:00
ehci-mem.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-pci.c USB: EHCI, OHCI: handover changes 2007-07-12 16:29:47 -07:00
ehci-ppc-soc.c USB: make EHCI initialize properly on PPC SOCs 2007-08-22 14:28:01 -07:00
ehci-ps3.c USB: PS3: USB system-bus rework 2007-07-12 16:34:30 -07:00
ehci-q.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-sched.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci.h Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
isp116x-hcd.c isp116x-hcd: prepare for urb->status 2007-07-19 17:46:04 -07:00
isp116x.h USB: Dealias -110 code (more complete) 2006-09-27 11:59:00 -07:00
ohci-at91.c USB: at91-ohci, handle extra at91sam9261 ahb clock 2007-02-16 15:32:24 -08:00
ohci-au1xxx.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-dbg.c USB: ohci, fix oddball gcc warning 2007-08-22 14:27:52 -07:00
ohci-ep93xx.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
ohci-hcd.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-hub.c USB: Fix NEC OHCI chip silicon bug 2007-07-12 16:34:29 -07:00
ohci-lh7a404.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-mem.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-omap.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-pci.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-pnx4008.c USB: ohci-pnx4008: Remove unnecessary cast of return value of kzalloc 2007-07-12 16:34:43 -07:00
ohci-pnx8550.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
ohci-ppc-of.c [POWERPC] Rename device_is_compatible to of_device_is_compatible 2007-05-07 20:31:14 +10:00
ohci-ppc-soc.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-ps3.c USB: PS3: USB system-bus rework 2007-07-12 16:34:30 -07:00
ohci-pxa27x.c [ARM] 4304/1: removes the unnecessary bit number from CKENnn_XXXX 2007-04-21 23:14:01 +01:00
ohci-q.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-s3c2410.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-sa1111.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci.h USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
pci-quirks.c EHCI: fix problem with BIOS handoff 2007-05-22 23:45:48 -07:00
pci-quirks.h [PATCH] USB: pci-quirks.c: proper prototypes 2006-04-14 11:12:20 -07:00
r8a66597-hcd.c usb: r8a66597-hcd: fix up error path. 2007-08-22 14:27:45 -07:00
r8a66597.h USB: r8a66597-hcd: fixes some problem 2007-07-19 17:46:08 -07:00
sl811-hcd.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sl811.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sl811_cs.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
u132-hcd.c USB: Clean up duplicate includes in drivers/usb/ 2007-10-12 14:54:58 -07:00
uhci-debug.c UHCI: Fix problem caused by lack of terminating QH 2007-03-26 14:17:48 -07:00
uhci-hcd.c drivers/firmware: const-ify DMI API and internals 2007-10-09 20:22:20 -04:00
uhci-hcd.h UHCI: Eliminate asynchronous skeleton Queue Headers 2007-02-23 15:03:45 -08:00
uhci-hub.c UHCI: fix port resume problem 2007-03-09 19:52:23 -08:00
uhci-q.c UHCI: short control URBs get a status stage 2007-07-19 17:46:04 -07:00