| From a54476e9eae1335542ac01492934398025b3999c Mon Sep 17 00:00:00 2001 |
| From: Wu Zhangjin <wuzj@lemote.com> |
| Date: Mon, 4 Jan 2010 11:33:02 +0800 |
| Subject: [PATCH] USB: Fix the mouse problem when copying large amounts of data |
| |
| commit a54476e9eae1335542ac01492934398025b3999c in tip. |
| |
| When copying large amounts of data between the USB storage devices and |
| the hard disk, the USB mouse will not work, this patch fixes it. |
| |
| [NOTE: This problem have been found in the Loongson family machines, not |
| sure whether it is producible on other platforms] |
| |
| Signed-off-by: Hu Hongbing <huhb@lemote.com> |
| Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> |
| |
| diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c |
| index 24eb747..ddbc272 100644 |
| --- a/drivers/usb/host/ohci-hcd.c |
| +++ b/drivers/usb/host/ohci-hcd.c |
| @@ -832,9 +832,13 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) |
| } |
| |
| if (ints & OHCI_INTR_WDH) { |
| - spin_lock (&ohci->lock); |
| - dl_done_list (ohci); |
| - spin_unlock (&ohci->lock); |
| + if (ohci->hcca->done_head == 0) { |
| + ints &= ~OHCI_INTR_WDH; |
| + } else { |
| + spin_lock (&ohci->lock); |
| + dl_done_list (ohci); |
| + spin_unlock (&ohci->lock); |
| + } |
| } |
| |
| if (quirk_zfmicro(ohci) && (ints & OHCI_INTR_SF)) { |
| -- |
| 1.7.1.1 |
| |