add fix for usb2 data corruption
authorFelix Fietkau <nbd@openwrt.org>
Tue, 30 Aug 2005 22:40:51 +0000 (22:40 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 30 Aug 2005 22:40:51 +0000 (22:40 +0000)
SVN-Revision: 1805

openwrt/target/linux/linux-2.4/patches/generic/208-usb2_fix.patch [new file with mode: 0644]

diff --git a/openwrt/target/linux/linux-2.4/patches/generic/208-usb2_fix.patch b/openwrt/target/linux/linux-2.4/patches/generic/208-usb2_fix.patch
new file mode 100644 (file)
index 0000000..f8e5be1
--- /dev/null
@@ -0,0 +1,15 @@
+diff -ur linux-2.4.30.dev/drivers/usb/host/ehci-q.c linux-tmp/drivers/usb/host/ehci-q.c
+--- linux-2.4.30.dev/drivers/usb/host/ehci-q.c 2005-01-19 15:10:07.000000000 +0100
++++ linux-tmp/drivers/usb/host/ehci-q.c        2005-03-30 05:11:12.000000000 +0200
+@@ -783,6 +765,11 @@
+               if (!(cmd & CMD_ASE)) {
+                       /* in case a clear of CMD_ASE didn't take yet */
+                       (void) handshake (&ehci->regs->status, STS_ASS, 0, 150);
++
++                      /* force async head to be valid */
++                      writel ((u32)ehci->async->qh_dma,
++                                      &ehci->regs->async_next);
++
+                       cmd |= CMD_ASE | CMD_RUN;
+                       writel (cmd, &ehci->regs->command);
+                       ehci->hcd.state = USB_STATE_RUNNING;