diff options
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index f2ceb5fdbeb7..025d33313681 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -619,9 +619,8 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
619 | unsigned i = HCS_N_PORTS (ehci->hcs_params); | 619 | unsigned i = HCS_N_PORTS (ehci->hcs_params); |
620 | 620 | ||
621 | /* resume root hub? */ | 621 | /* resume root hub? */ |
622 | status = readl (&ehci->regs->command); | 622 | if (!(readl(&ehci->regs->command) & CMD_RUN)) |
623 | if (!(status & CMD_RUN)) | 623 | usb_hcd_resume_root_hub(hcd); |
624 | writel (status | CMD_RUN, &ehci->regs->command); | ||
625 | 624 | ||
626 | while (i--) { | 625 | while (i--) { |
627 | int pstatus = readl (&ehci->regs->port_status [i]); | 626 | int pstatus = readl (&ehci->regs->port_status [i]); |
@@ -638,7 +637,6 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
638 | */ | 637 | */ |
639 | ehci->reset_done [i] = jiffies + msecs_to_jiffies (20); | 638 | ehci->reset_done [i] = jiffies + msecs_to_jiffies (20); |
640 | ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); | 639 | ehci_dbg (ehci, "port %d remote wakeup\n", i + 1); |
641 | usb_hcd_resume_root_hub(hcd); | ||
642 | } | 640 | } |
643 | } | 641 | } |
644 | 642 | ||