| From 7fcb8ad9a23d6fc376a8b4359235ffa787efabc9 Mon Sep 17 00:00:00 2001 |
| From: Wu Zhangjin <wuzj@lemote.com> |
| Date: Mon, 4 Jan 2010 11:33:02 +0800 |
| Subject: [PATCH 086/274] USB: Fix the mouse problem when copying large |
| amounts of data |
| |
| 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> |
| --- |
| drivers/usb/host/ohci-hcd.c | 10 +++++++--- |
| 1 file changed, 7 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c |
| index 235171f..0157357 100644 |
| --- a/drivers/usb/host/ohci-hcd.c |
| +++ b/drivers/usb/host/ohci-hcd.c |
| @@ -829,9 +829,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.10.4 |
| |