summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2013-04-05 22:43:55 (GMT)
committerScott Wood <scottwood@freescale.com>2013-04-05 22:43:55 (GMT)
commit392aeab578c624bb00787b21d7a0b27f31785f23 (patch)
tree56d38ed817345321aa2d24add000d2f147298e92 /drivers/usb
parentca1eff3e439fa5597da8cdf3f5b83ce962a0d912 (diff)
parent4d72f19861e95cf911e0336882f0958f39f5cad0 (diff)
downloadlinux-fsl-qoriq-392aeab578c624bb00787b21d7a0b27f31785f23.tar.xz
Merge tag 'v3.8.4-rt2'
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/chipidea/debug.c2
-rw-r--r--drivers/usb/core/hcd.c4
-rw-r--r--drivers/usb/host/ohci-hcd.c10
3 files changed, 10 insertions, 6 deletions
diff --git a/drivers/usb/chipidea/debug.c b/drivers/usb/chipidea/debug.c
index 3bc244d..a62c4a4 100644
--- a/drivers/usb/chipidea/debug.c
+++ b/drivers/usb/chipidea/debug.c
@@ -222,7 +222,7 @@ static struct {
} dbg_data = {
.idx = 0,
.tty = 0,
- .lck = __RW_LOCK_UNLOCKED(lck)
+ .lck = __RW_LOCK_UNLOCKED(dbg_data.lck)
};
/**
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 8e64adf..59c4d3c 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -2217,7 +2217,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
* when the first handler doesn't use it. So let's just
* assume it's never used.
*/
- local_irq_save(flags);
+ local_irq_save_nort(flags);
if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd)))
rc = IRQ_NONE;
@@ -2226,7 +2226,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
else
rc = IRQ_HANDLED;
- local_irq_restore(flags);
+ local_irq_restore_nort(flags);
return rc;
}
EXPORT_SYMBOL_GPL(usb_hcd_irq);
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 180a2b0..1a3e81a 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -857,9 +857,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)) {