summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2015-03-06 17:30:03 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:07:09 -0700
commita8028071dd84eea4a3c36eb972e0abac5d77696a (patch)
tree61874cfcfc9e99adb3e433c72a41df4bd79674d5 /drivers/usb
parent8d8d2bea771e1ecef2ea1cb136088e72053c9067 (diff)
usb: dwc3: gadget: Increase the link state change timeout value
After the device remote wake up some USB hosts are driving bus resume for longer than 3 seconds. As a result link state change does not happen within 3 seconds and remote wake up fails. In worst case it is observed that usb host is driving bus resume for 8 seconds. Hence increase the timeout value to 16 seconds. CRs-Fixed: 803183 Change-Id: I1cbb29ccd2b4e264c032d7237efcfd87cef71942 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/gadget.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 63f90080cb49..b63e9c0ab305 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1621,10 +1621,15 @@ static int dwc3_gadget_wakeup_int(struct dwc3 *dwc)
spin_unlock_irqrestore(&dwc->lock, flags);
enable_irq(dwc->irq);
+
+ /*
+ * Have bigger value (16 sec) for timeout since some host PCs driving
+ * resume for very long time (e.g. 8 sec)
+ */
ret = wait_event_interruptible_timeout(dwc->wait_linkstate,
(dwc->link_state < DWC3_LINK_STATE_U3) ||
(dwc->link_state == DWC3_LINK_STATE_SS_DIS),
- msecs_to_jiffies(3000)); /* 3 seconds */
+ msecs_to_jiffies(16000));
spin_lock_irqsave(&dwc->lock, flags);
/* Disable link status change event */