]> Pileus Git - ~andy/linux/blobdiff - drivers/usb/host/ehci-hub.c
USB: EHCI: don't turn on PORT_SUSPEND during port resume
[~andy/linux] / drivers / usb / host / ehci-hub.c
index 576b735f49b62721d1a9124ecbdcb5cf28804082..0df45d933a10322bfc1b5c0a205a2745ea487f4d 100644 (file)
@@ -464,7 +464,7 @@ static int ehci_bus_resume (struct usb_hcd *hcd)
        while (i--) {
                temp = ehci_readl(ehci, &ehci->regs->port_status [i]);
                if (test_bit(i, &resume_needed)) {
-                       temp &= ~(PORT_RWC_BITS | PORT_RESUME);
+                       temp &= ~(PORT_RWC_BITS | PORT_SUSPEND | PORT_RESUME);
                        ehci_writel(ehci, temp, &ehci->regs->port_status [i]);
                        ehci_vdbg (ehci, "resumed port %d\n", i + 1);
                }
@@ -871,10 +871,9 @@ static int ehci_hub_control (
                                usb_hcd_end_port_resume(&hcd->self, wIndex);
 
                                /* stop resume signaling */
-                               temp = ehci_readl(ehci, status_reg);
-                               ehci_writel(ehci,
-                                       temp & ~(PORT_RWC_BITS | PORT_RESUME),
-                                       status_reg);
+                               temp &= ~(PORT_RWC_BITS |
+                                               PORT_SUSPEND | PORT_RESUME);
+                               ehci_writel(ehci, temp, status_reg);
                                clear_bit(wIndex, &ehci->resuming_ports);
                                retval = handshake(ehci, status_reg,
                                           PORT_RESUME, 0, 2000 /* 2msec */);
@@ -884,7 +883,7 @@ static int ehci_hub_control (
                                                wIndex + 1, retval);
                                        goto error;
                                }
-                               temp &= ~(PORT_SUSPEND|PORT_RESUME|(3<<10));
+                               temp = ehci_readl(ehci, status_reg);
                        }
                }