linux/drivers/usb/host
David Brownell 30bf54e62a USB: PS3: Fix EHCI ISO transfer bug
This adds a workaround for an issue reported with ISO transfers
on some EHCI controllers, most recently with VIA KT800 and PS3
EHCI silicon.

The issue is that the silicon doesn't necessarily seem to be done
using ISO DMA descriptors (itd, sitd) when it marks them inactive.
(One theory is that the ill-defined mechanism where hardware caches
periodic transfer descriptors isn't invalidating their state...)
With such silicon, quick re-use of those descriptors makes trouble.
Waiting until the next frame seems to be a sufficient workaround.

This patch ensures that the relevant descriptors aren't available
for immediate re-use.  It does so by not recycling them until after
issuing the completion callback which would reuse them by enqueueing
an URB and thus (re)allocating ISO DMA descriptors.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Geoff Levand <geoffrey.levand@am.sony.com>
Cc: Masashi Kimoto <Masashi_Kimoto@hq.scei.sony.co.jp>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-02-01 14:34:57 -08:00
..
ehci-au1xxx.c USB: force handover port to companion when hub_port_connect_change fails 2008-02-01 14:34:52 -08:00
ehci-dbg.c USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
ehci-fsl.c USB: Spelling fixes 2008-02-01 14:34:57 -08: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 USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
ehci-hub.c USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
ehci-mem.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-pci.c USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
ehci-ppc-soc.c USB: force handover port to companion when hub_port_connect_change fails 2008-02-01 14:34:52 -08:00
ehci-ps3.c USB: force handover port to companion when hub_port_connect_change fails 2008-02-01 14:34:52 -08:00
ehci-q.c USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
ehci-sched.c USB: PS3: Fix EHCI ISO transfer bug 2008-02-01 14:34:57 -08:00
ehci.h USB: EHCI: add separate IAA watchdog timer 2008-02-01 14:34:55 -08:00
isp116x-hcd.c USB: Drop unnecessary continue in a few drivers 2008-02-01 14:34:51 -08:00
isp116x.h
Kconfig USB: fix USB_OHCI_HCD_SSB dependencies 2007-11-28 13:58:32 -08:00
Makefile USB: r8a66597-hcd: host controller driver for R8A66597 2007-07-12 16:29:45 -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: convert ohci debug files to use debugfs instead of sysfs 2008-02-01 14:34:52 -08: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: Remove OHCI useless masking/unmasking of WDH interrupt 2008-02-01 14:34:53 -08: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 i2c/tps65010: move header to <linux/i2c/...> 2008-01-27 18:14:49 +01:00
ohci-pci.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-pnx4008.c i2c: Kill rogue driver IDs 2008-01-27 18:14:47 +01: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] mpc5200: normalize compatible property bindings 2008-01-26 15:26:01 -07:00
ohci-ppc-soc.c USB: add runtime frame_no quirk for big-endian OHCI 2007-10-12 14:55:32 -07:00
ohci-ps3.c USB: PS3: USB system-bus rework 2007-07-12 16:34:30 -07:00
ohci-pxa27x.c [ARM] USB: update pxa27x ohci driver to use clk support 2008-01-26 15:07:53 +00:00
ohci-q.c USB: Eliminate urb->status usage! 2007-10-12 14:55:23 -07:00
ohci-s3c2410.c Add missing newlines to some uses of dev_<level> messages 2007-10-18 14:37:28 -07:00
ohci-sa1111.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-ssb.c USB: use IRQF_DISABLED for HCD interrupt handlers 2007-12-17 10:47:15 -08:00
ohci.h USB: convert ohci debug files to use debugfs instead of sysfs 2008-02-01 14:34:52 -08:00
pci-quirks.c EHCI: fix problem with BIOS handoff 2007-05-22 23:45:48 -07:00
pci-quirks.h
r8a66597-hcd.c USB: use IRQF_DISABLED for HCD interrupt handlers 2007-12-17 10:47:15 -08:00
r8a66597.h USB: Spelling fixes 2008-02-01 14:34:57 -08:00
sl811_cs.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
sl811-hcd.c Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
sl811.h
u132-hcd.c USB: ELAN U132 Host Controller Driver: convert sw_lock to mutex 2007-10-12 14:55:24 -07:00
uhci-debug.c USB: add urb->unlinked field 2007-10-12 14:55:19 -07:00
uhci-hcd.c USB: use IRQF_DISABLED for HCD interrupt handlers 2007-12-17 10:47:15 -08:00
uhci-hcd.h USB: Eliminate urb->status usage! 2007-10-12 14:55:23 -07:00
uhci-hub.c UHCI: fix port resume problem 2007-03-09 19:52:23 -08:00
uhci-q.c USB: fix scheduling of Iso URBs in uhci-hcd 2007-10-25 12:18:43 -07:00