summaryrefslogtreecommitdiff
path: root/drivers/usb/host/xhci.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2015-11-26 01:47:38 +0300
committerArnd Bergmann <arnd@arndb.de>2015-11-26 01:47:38 +0300
commitd3de94ba4e58e8043d500f7335797d6a2ac93248 (patch)
tree8382a170965eec00ebfe62e7b42dfdea9ca44f54 /drivers/usb/host/xhci.c
parentfabc2c9c1ff5376489e83e142f1ab236609435b1 (diff)
parent1ec218373b8ebda821aec00bb156a9c94fad9cd4 (diff)
downloadlinux-d3de94ba4e58e8043d500f7335797d6a2ac93248.tar.xz
Merge tag 'v4.4-rc2' into fixes
Linux 4.4-rc2 is backmerged from the keystone fixes.
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r--drivers/usb/host/xhci.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 6e7dc6f93978..dfa44d3e8eee 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -175,6 +175,16 @@ int xhci_reset(struct xhci_hcd *xhci)
command |= CMD_RESET;
writel(command, &xhci->op_regs->command);
+ /* Existing Intel xHCI controllers require a delay of 1 mS,
+ * after setting the CMD_RESET bit, and before accessing any
+ * HC registers. This allows the HC to complete the
+ * reset operation and be ready for HC register access.
+ * Without this delay, the subsequent HC register access,
+ * may result in a system hang very rarely.
+ */
+ if (xhci->quirks & XHCI_INTEL_HOST)
+ udelay(1000);
+
ret = xhci_handshake(&xhci->op_regs->command,
CMD_RESET, 0, 10 * 1000 * 1000);
if (ret)