|
@@ -310,6 +310,14 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
|
|
|
}
|
|
|
spin_unlock_irq(&ehci->lock);
|
|
|
|
|
|
+ if (changed && ehci_has_fsl_susp_errata(ehci))
|
|
|
+ /*
|
|
|
+ * Wait for at least 10 millisecondes to ensure the controller
|
|
|
+ * enter the suspend status before initiating a port resume
|
|
|
+ * using the Force Port Resume bit (Not-EHCI compatible).
|
|
|
+ */
|
|
|
+ usleep_range(10000, 20000);
|
|
|
+
|
|
|
if ((changed && ehci->has_tdi_phy_lpm) || fs_idle_delay) {
|
|
|
/*
|
|
|
* Wait for HCD to enter low-power mode or for the bus
|
|
@@ -1200,6 +1208,12 @@ int ehci_hub_control(
|
|
|
wIndex, (temp1 & HOSTPC_PHCD) ?
|
|
|
"succeeded" : "failed");
|
|
|
}
|
|
|
+ if (ehci_has_fsl_susp_errata(ehci)) {
|
|
|
+ /* 10ms for HCD enter suspend */
|
|
|
+ spin_unlock_irqrestore(&ehci->lock, flags);
|
|
|
+ usleep_range(10000, 20000);
|
|
|
+ spin_lock_irqsave(&ehci->lock, flags);
|
|
|
+ }
|
|
|
set_bit(wIndex, &ehci->suspended_ports);
|
|
|
break;
|
|
|
case USB_PORT_FEAT_POWER:
|