aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/host/ehci-hub.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 576b735f49b6..0df45d933a10 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -464,7 +464,7 @@ static int ehci_bus_resume (struct usb_hcd *hcd)
464 while (i--) { 464 while (i--) {
465 temp = ehci_readl(ehci, &ehci->regs->port_status [i]); 465 temp = ehci_readl(ehci, &ehci->regs->port_status [i]);
466 if (test_bit(i, &resume_needed)) { 466 if (test_bit(i, &resume_needed)) {
467 temp &= ~(PORT_RWC_BITS | PORT_RESUME); 467 temp &= ~(PORT_RWC_BITS | PORT_SUSPEND | PORT_RESUME);
468 ehci_writel(ehci, temp, &ehci->regs->port_status [i]); 468 ehci_writel(ehci, temp, &ehci->regs->port_status [i]);
469 ehci_vdbg (ehci, "resumed port %d\n", i + 1); 469 ehci_vdbg (ehci, "resumed port %d\n", i + 1);
470 } 470 }
@@ -871,10 +871,9 @@ static int ehci_hub_control (
871 usb_hcd_end_port_resume(&hcd->self, wIndex); 871 usb_hcd_end_port_resume(&hcd->self, wIndex);
872 872
873 /* stop resume signaling */ 873 /* stop resume signaling */
874 temp = ehci_readl(ehci, status_reg); 874 temp &= ~(PORT_RWC_BITS |
875 ehci_writel(ehci, 875 PORT_SUSPEND | PORT_RESUME);
876 temp & ~(PORT_RWC_BITS | PORT_RESUME), 876 ehci_writel(ehci, temp, status_reg);
877 status_reg);
878 clear_bit(wIndex, &ehci->resuming_ports); 877 clear_bit(wIndex, &ehci->resuming_ports);
879 retval = handshake(ehci, status_reg, 878 retval = handshake(ehci, status_reg,
880 PORT_RESUME, 0, 2000 /* 2msec */); 879 PORT_RESUME, 0, 2000 /* 2msec */);
@@ -884,7 +883,7 @@ static int ehci_hub_control (
884 wIndex + 1, retval); 883 wIndex + 1, retval);
885 goto error; 884 goto error;
886 } 885 }
887 temp &= ~(PORT_SUSPEND|PORT_RESUME|(3<<10)); 886 temp = ehci_readl(ehci, status_reg);
888 } 887 }
889 } 888 }
890 889