linux/drivers/usb/host
Sebastian Andrzej Siewior b14e840d04 USB: isp1760: Implement solution for erratum 2
The document says:
|2.1 Problem description
|    When at least two USB devices are simultaneously running, it is observed that
|    sometimes the INT corresponding to one of the USB devices stops occurring. This may
|    be observed sometimes with USB-to-serial or USB-to-network devices.
|    The problem is not noticed when only USB mass storage devices are running.
|2.2 Implication
|    This issue is because of the clearing of the respective Done Map bit on reading the ATL
|    PTD Done Map register when an INT is generated by another PTD completion, but is not
|    found set on that read access. In this situation, the respective Done Map bit will remain
|    reset and no further INT will be asserted so the data transfer corresponding to that USB
|    device will stop.
|2.3 Workaround
|    An SOF INT can be used instead of an ATL INT with polling on Done bits. A time-out can
|    be implemented and if a certain Done bit is never set, verification of the PTD completion
|    can be done by reading PTD contents (valid bit).
|    This is a proven workaround implemented in software.

Russell King run into this with an USB-to-serial converter. This patch
implements his suggestion to enable the high frequent SOF interrupt only
at the time we have ATL packages queued. It goes even one step further
and enables the SOF interrupt only if we have more than one ATL packet
queued at the same time.

Cc: <stable@kernel.org> # [2.6.35.x, 2.6.36.x, 2.6.37.x]
Tested-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-02-17 10:47:55 -08:00
..
whci USB: whci-hcd: fix compiler warning 2010-12-10 14:18:35 -08:00
Kconfig USB: Fix trout build failure with ci13xxx_msm gadget 2011-02-04 12:38:14 -08:00
Makefile USB: Add EHCI and OHCH glue for OCTEON II SOCs. 2010-10-29 19:08:44 +01:00
ehci-atmel.c usb: Add in missing EHCI helpers. 2010-11-30 16:51:21 -08:00
ehci-au1xxx.c USB: EHCI: fix scheduling while atomic during suspend 2011-02-03 16:57:43 -08:00
ehci-cns3xxx.c USB: cns3xxx: Add EHCI and OHCI bus glue for cns3xxx SOCs 2010-11-29 18:32:47 +03:00
ehci-dbg.c USB: EHCI: Cleanup and rewrite ehci_vdgb(). 2011-02-04 11:43:58 -08:00
ehci-fsl.c USB: ehci-fsl: Fix 'have_sysif_regs' detection 2011-01-22 18:38:58 -08:00
ehci-fsl.h USB: ehci-fsl: Fix 'have_sysif_regs' detection 2011-01-22 18:38:58 -08:00
ehci-hcd.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ehci-hub.c Merge 2.6.38-rc5 into usb-next 2011-02-17 09:56:55 -08:00
ehci-ixp4xx.c
ehci-lpm.c USB: Mark EHCI LPM functions as __maybe_unused 2011-02-17 10:47:55 -08:00
ehci-mem.c USB: EHCI: AMD periodic frame list table quirk 2010-11-16 13:36:40 -08:00
ehci-msm.c USB: EHCI: msm: Add support for power management 2010-12-10 14:23:32 -08:00
ehci-mxc.c USB: ehci-mxc: add work-around for efika mx/sb bug 2011-01-22 18:48:10 -08:00
ehci-octeon.c USB: Add EHCI and OHCH glue for OCTEON II SOCs. 2010-10-29 19:08:44 +01:00
ehci-omap.c usb: ehci-omap: Show fatal probing time errors to end user 2011-02-01 11:06:09 +02:00
ehci-orion.c
ehci-pci.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ehci-ppc-of.c USB: ehci-ppc-of: problems in unwind 2010-09-03 17:33:40 -07:00
ehci-ps3.c
ehci-q.c USB: EHCI: Rearrange EHCI_URB_TRACE code to avoid GCC-4.6 warnings. 2011-02-04 11:43:59 -08:00
ehci-sched.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ehci-sh.c usb: ehci-sh: Add missing ehci helpers. 2010-11-26 16:48:31 +09:00
ehci-spear.c USB host: Adding USB ehci & ohci support for spear platform 2010-11-16 13:53:29 -08:00
ehci-vt8500.c usb: Add support for VIA VT8500 and compatibles in EHCI HCD 2010-11-11 06:24:54 -08:00
ehci-w90x900.c usb: Add in missing EHCI helpers. 2010-11-30 16:51:21 -08:00
ehci-xilinx-of.c usb: Add in missing EHCI helpers. 2010-11-30 16:51:21 -08:00
ehci.h Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
fhci-dbg.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-hcd.c drivers: fix comment typo diable -> disable. 2011-01-03 16:08:59 +01:00
fhci-hub.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-mem.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-q.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-sched.c fix comment/printk typos concerning "already" 2010-07-11 21:45:40 +02:00
fhci-tds.c drivers: fix comment typo diable -> disable. 2011-01-03 16:08:59 +01:00
fhci.h USB: FHCI: cq_get() should check kfifo_out()'s return value 2010-05-20 13:21:46 -07:00
fsl-mph-dr-of.c USB: ehci-fsl: Fix 'have_sysif_regs' detection 2011-01-22 18:38:58 -08:00
hwa-hc.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
imx21-dbg.c
imx21-hcd.c USB: HCD: Add usb_hcd prefix to exported functions 2011-02-04 11:48:18 -08:00
imx21-hcd.h USB: imx21-hcd accept arbitary transfer buffer alignement. 2010-10-22 10:22:03 -07:00
isp116x-hcd.c USB: isp116x-hcd - use resource_size instead of defining its own resource_len macro 2010-10-22 10:22:14 -07:00
isp116x.h
isp1362-hcd.c Merge branch 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2010-11-24 08:21:43 +09:00
isp1362.h USB: host: Remove dead CONFIG_ARCH_KARO 2010-08-10 14:35:40 -07:00
isp1760-hcd.c USB: isp1760: Implement solution for erratum 2 2011-02-17 10:47:55 -08:00
isp1760-hcd.h USB: isp1760: Implement solution for erratum 2 2011-02-17 10:47:55 -08:00
isp1760-if.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
octeon2-common.c USB: Add EHCI and OHCH glue for OCTEON II SOCs. 2010-10-29 19:08:44 +01:00
ohci-at91.c
ohci-au1xxx.c
ohci-cns3xxx.c USB: cns3xxx: Add EHCI and OHCI bus glue for cns3xxx SOCs 2010-11-29 18:32:47 +03:00
ohci-da8xx.c
ohci-dbg.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
ohci-ep93xx.c
ohci-hcd.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ohci-hub.c USB: controller resume should check the root hub 2010-08-10 14:35:37 -07:00
ohci-jz4740.c USB: ohci-jz4740: Fix spelling in MODULE_ALIAS 2010-11-11 07:14:07 -08:00
ohci-lh7a404.c
ohci-mem.c
ohci-octeon.c USB: Add EHCI and OHCH glue for OCTEON II SOCs. 2010-10-29 19:08:44 +01:00
ohci-omap.c
ohci-omap3.c usb: ohci-omap3: fix trivial typo 2010-12-16 13:36:12 -08:00
ohci-pci.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ohci-pnx4008.c i2c: Add support for custom probe function 2010-08-11 18:20:56 +02:00
ohci-pnx8550.c
ohci-ppc-of.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
ohci-ppc-soc.c
ohci-ps3.c
ohci-pxa27x.c ARM: ohci-pxa27x: enable OHCI over U2DC for pxa3xx 2010-10-08 16:21:17 +08:00
ohci-q.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
ohci-s3c2410.c
ohci-sa1111.c
ohci-sh.c usb: ohci-sh: Set IRQ as shared. 2010-11-01 17:01:27 -04:00
ohci-sm501.c USB: ohci-sm501: add iounmap on error path 2010-10-22 10:21:35 -07:00
ohci-spear.c USB host: Adding USB ehci & ohci support for spear platform 2010-11-16 13:53:29 -08:00
ohci-ssb.c USB: Add USB 2.0 to ssb ohci driver 2010-08-10 14:35:44 -07:00
ohci-tmio.c
ohci.h Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
oxu210hp-hcd.c tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
oxu210hp.h
pci-quirks.c Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
pci-quirks.h Revert "USB host: Move AMD PLL quirk to pci-quirks.c" 2011-02-17 09:54:16 -08:00
r8a66597-hcd.c usb: Fix up r8a66597-hcd section mismatches. 2010-09-16 17:16:31 +09:00
r8a66597.h usb: r8a66597-hcd: Change mistake of the outsw function 2010-10-22 10:22:11 -07:00
sl811-hcd.c USB SL811HS HCD: Fix memory leak in sl811h_urb_enqueue() 2011-02-03 16:42:17 -08:00
sl811.h
sl811_cs.c pcmcia: move driver name to struct pcmcia_driver 2010-09-29 17:20:24 +02:00
u132-hcd.c drivers/usb: Remove unnecessary return's from void functions 2010-08-10 14:25:42 +02:00
uhci-debug.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
uhci-hcd.c drivers/usb/host/uhci-hcd.c: Remove unnecessary casts of pci_get_drvdata 2010-11-16 13:54:18 -08:00
uhci-hcd.h USB: UHCI: add support for Intel's wakeup flags 2010-08-10 14:35:38 -07:00
uhci-hub.c USB: controller resume should check the root hub 2010-08-10 14:35:37 -07:00
uhci-q.c USB: host: uhci-q: Fixed minor coding style issues 2010-12-10 14:18:36 -08:00
xhci-dbg.c USB: xhci: Correct assumptions about number of rings per endpoint. 2010-05-20 13:21:38 -07:00
xhci-ext-caps.h
xhci-hub.c xhci: Don't let the USB core disable SuperSpeed ports. 2010-11-19 16:23:31 -08:00
xhci-mem.c xhci: Fix issue with port array setup and buggy hosts. 2010-12-09 11:59:42 -08:00
xhci-pci.c USB: xHCI: PCI power management implementation 2010-10-22 10:22:13 -07:00
xhci-ring.c xhci: Remove more doorbell-related reads 2011-01-14 15:52:00 -08:00
xhci.c xhci: Use GFP_NOIO during device reset. 2011-01-14 15:51:51 -08:00
xhci.h xhci: Remove more doorbell-related reads 2011-01-14 15:52:00 -08:00