summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorjoyw <joyw@nvidia.com>2013-01-31 19:17:33 +0800
committerRiham Haidar <rhaidar@nvidia.com>2013-02-01 18:42:08 -0800
commit73596b7df75267487001e35367cb0c81e7d5d51a (patch)
tree0248b15164afece922e6e55412c7b3c5170db6da /drivers/usb
parent8c3bb236fdcd1e3106efc59b479036d29531af8e (diff)
usb: xhci: WAR fix for xhci_bus_suspend failed -16
Add delay after programming host controller port status register. Change-Id: Ic023653879de43f30f2cd4366d1944d0c14089fc Signed-off-by: joyw <joyw@nvidia.com> Reviewed-on: http://git-master/r/196188 Reviewed-by: Ajay Gupta <ajayg@nvidia.com> Tested-by: Ajay Gupta <ajayg@nvidia.com> Reviewed-by: Ashutosh Jha <ajha@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jui Chang Kuo <jckuo@nvidia.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/xhci-hub.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index bbf3c0c9cde7..824fc0f4e474 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -1062,8 +1062,16 @@ int xhci_bus_resume(struct usb_hcd *hcd)
xhci, port_index + 1);
if (slot_id)
xhci_ring_device(xhci, slot_id);
- } else
+ } else{
xhci_writel(xhci, temp, port_array[port_index]);
+ /* FIXME: Remove below 20ms delay when we have correct
+ * solution for error message
+ * "xhci_bus_suspend failed -16"
+ */
+ spin_unlock_irqrestore(&xhci->lock, flags);
+ msleep(20);
+ spin_lock_irqsave(&xhci->lock, flags);
+ }
if (hcd->speed != HCD_USB3) {
/* disable remote wake up for USB 2.0 */