linux/drivers/usb/host
Alan Stern 68aa95d5d4 EHCI: workaround for MosChip controller bug
This patch (as1489) works around a hardware bug in MosChip EHCI
controllers.  Evidently when one of these controllers increments the
frame-index register, it changes the three low-order bits (the
microframe counter) before changing the higher order bits (the frame
counter).  If the register is read at just the wrong time, the value
obtained is too low by 8.

When the appropriate quirk flag is set, we work around this problem by
reading the frame-index register a second time if the first value's
three low-order bits are all 0.  This gives the hardware a chance to
finish updating the register, yielding the correct value.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Jason N Pitt <jpitt@fhcrc.org>
CC: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-10-18 13:49:33 -07:00
..
whci treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ath79.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-atmel.c USB: EHCI: Support controllers with big endian capability regs 2011-05-03 11:43:21 -07:00
ehci-au1xxx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-cns3xxx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-dbg.c EHCI: workaround for MosChip controller bug 2011-10-18 13:49:33 -07:00
ehci-fsl.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-fsl.h USB: ehci-fsl: add MPC5121E specific suspend and resume 2011-05-02 16:59:36 -07:00
ehci-grlib.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-hcd.c EHCI: workaround for MosChip controller bug 2011-10-18 13:49:33 -07:00
ehci-hub.c Merge 3.1-rc4 into usb-next 2011-08-29 08:56:17 -07:00
ehci-ixp4xx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
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 ehci-msm : use ehci_setup 2011-07-08 14:51:29 -07:00
ehci-mxc.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-octeon.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-omap.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-orion.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-pci.c EHCI: workaround for MosChip controller bug 2011-10-18 13:49:33 -07:00
ehci-pmcmsp.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ppc-of.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ps3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-pxa168.c USB: pxa168: Add onchip USB host controller support 2011-08-22 15:38:30 -07:00
ehci-q.c usb: ehci: remove the 1st wmb in qh_append_tds 2011-09-18 01:38:59 -07:00
ehci-s5p.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-sched.c EHCI: workaround for MosChip controller bug 2011-10-18 13:49:33 -07:00
ehci-sh.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-spear.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-sysfs.c USB: EHCI: Allow users to override 80% max periodic bandwidth 2011-07-08 14:51:33 -07:00
ehci-tegra.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-vt8500.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-w90x900.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-xilinx-of.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-xls.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ehci.h EHCI: workaround for MosChip controller bug 2011-10-18 13:49:33 -07:00
fhci-dbg.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07: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 Fix common misspellings 2011-03-31 11:26:23 -03:00
fhci.h Fix common misspellings 2011-03-31 11:26:23 -03: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 treewide: fix a few typos in comments 2011-05-10 10:16:21 +02:00
imx21-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
imx21-hcd.h USB: imx21-hcd accept arbitary transfer buffer alignement. 2010-10-22 10:22:03 -07:00
isp116x-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
isp116x.h Fix common misspellings 2011-03-31 11:26:23 -03:00
isp1362-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
isp1362.h USB: host: Remove dead CONFIG_ARCH_KARO 2010-08-10 14:35:40 -07:00
isp1760-hcd.c usb/isp1760: Clear TT buffer on interrupted low & full speed transfers 2011-08-22 17:05:27 -07:00
isp1760-hcd.h usb/isp1760: Use polling instead of SOF interrupts to fix Errata 2 2011-08-22 15:32:45 -07:00
isp1760-if.c usb/isp1760: Let OF bindings depend on general CONFIG_OF instead of PPC_OF . 2011-10-18 13:42:13 -07:00
Kconfig usb: gadget: renesas_usbhs: add mod_host support 2011-10-13 20:41:52 +03:00
Makefile usb/xhci: remove CONFIG_PCI in xhci.c's probe function 2011-09-26 15:51:14 -07:00
octeon2-common.c usb: Configure octeon2 glue logic for proper uSOF cycle period. 2011-05-03 10:09:32 -07:00
ohci-at91.c USB: ohci-at91: fix power management hanging 2010-04-30 09:25:12 -07:00
ohci-ath79.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-au1xxx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-cns3xxx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ohci-da8xx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-dbg.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
ohci-ep93xx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-hcd.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ohci-hub.c USB: Fix runtime wakeup on OHCI 2011-10-18 13:42:07 -07:00
ohci-jz4740.c USB: ohci-jz4740: Fix spelling in MODULE_ALIAS 2010-11-11 07:14:07 -08:00
ohci-mem.c
ohci-octeon.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-omap3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-omap.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pci.c OHCI: fix regression caused by nVidia shutdown workaround 2011-05-17 11:20:23 -07:00
ohci-pnx4008.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pnx8550.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ppc-of.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ppc-soc.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ps3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pxa27x.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-q.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
ohci-s3c2410.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sa1111.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sh.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sm501.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-spear.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ssb.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-tmio.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-xls.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ohci.h Merge branch 'remove' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-16 19:05:40 -07:00
oxu210hp-hcd.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
oxu210hp.h
pci-quirks.c usb/host/pci-quirks.c: correct annotation of `ehci_dmi_nohandoff_table' 2011-08-08 14:00:14 -07:00
pci-quirks.h Intel xhci: Support EHCI/xHCI port switching. 2011-05-27 12:07:36 -07:00
r8a66597-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
r8a66597.h usb: r8a66597-hcd: add function for external controller 2011-07-08 14:57:11 -07:00
sl811_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
sl811-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
sl811.h
u132-hcd.c usb: u132-hcd: Drop __TIME__ usage 2011-04-13 16:36:06 -07:00
uhci-debug.c USB: UHCI: Add support for big endian descriptors 2011-05-19 16:43:20 -07:00
uhci-grlib.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
uhci-hcd.c USB: UHCI: improve comments and logic for root-hub suspend 2011-09-26 15:58:18 -07:00
uhci-hcd.h USB: UHCI: Add support for big endian descriptors 2011-05-19 16:43:20 -07:00
uhci-hub.c USB: UHCI: Wrap I/O register accesses 2011-05-06 18:24:01 -07:00
uhci-pci.c USB: UHCI: Move PCI specific functions to uhci-pci.c 2011-05-06 18:24:00 -07:00
uhci-q.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
xhci-dbg.c Merge 3.0-rc2 into usb-linus as it's needed by some USB patches 2011-06-14 06:51:23 -07:00
xhci-ext-caps.h xHCI: Check host USB2 LPM capability 2011-09-26 15:51:09 -07:00
xhci-hub.c xHCI/USB: Make xHCI driver have a BOS descriptor. 2011-10-18 13:42:06 -07:00
xhci-mem.c usb/xhci: replace pci_*_consistent() with dma_*_coherent() 2011-09-26 15:51:13 -07:00
xhci-pci.c usb/xhci: remove CONFIG_PCI in xhci.c's probe function 2011-09-26 15:51:14 -07:00
xhci-ring.c xHCI: AMD isoc link TRB chain bit quirk 2011-09-26 15:51:11 -07:00
xhci.c usb/xhci: remove CONFIG_PCI in xhci.c's probe function 2011-09-26 15:51:14 -07:00
xhci.h usb/xhci: remove CONFIG_PCI in xhci.c's probe function 2011-09-26 15:51:14 -07:00