summaryrefslogtreecommitdiff
path: root/drivers/usb/host/ehci-hub.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-hub.c')
-rw-r--r--drivers/usb/host/ehci-hub.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 3ee897c130f9..73f085bbeb10 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -299,6 +299,15 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
USB_PORT_STAT_HIGH_SPEED)
fs_idle_delay = true;
ehci_writel(ehci, t2, reg);
+ if ((t2 & PORT_WKDISC_E)
+ && (ehci_port_speed(ehci, t2) ==
+ USB_PORT_STAT_HIGH_SPEED))
+ /*
+ * If the high-speed device has not switched
+ * to full-speed idle before WKDISC_E has
+ * effected, there will be a WKDISC event.
+ */
+ mdelay(4);
changed = 1;
}
}