summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorDov Levenglick <dovl@codeaurora.org>2014-03-27 23:41:09 +0200
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:06:25 -0700
commitce73ca32ca2b78eba2a6084d1dec780c2f0fdec4 (patch)
tree6d94e758053d11cab4c7277d83bbaa22cc9f2c30 /drivers/usb
parentc694893be5d6e142aad8ff41fdfbad8ab7df4280 (diff)
usb: dwc3: gadget: start resume sequence on remote-wakeup
As per Synopsys databook, the USB controller does not trigger a wakeup event when remote-wakeup is used. Hence, after remote-wakeup sequence is complete, and the device is back at U0 state, it is required that the resume sequence is initiated manually by SW. Change-Id: I2f147d4a0644088b948b1798627c7717c35c0104 Signed-off-by: Bar Weiner <bweiner@codeaurora.org> Signed-off-by: Dov Levenglick <dovl@codeaurora.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/gadget.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index c645345881b7..e6926e5cdc55 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -37,6 +37,8 @@
#include "debug.h"
#include "io.h"
+static void dwc3_gadget_wakeup_interrupt(struct dwc3 *dwc);
+
/**
* dwc3_gadget_set_test_mode - Enables USB2 Test Modes
* @dwc: pointer to our context structure
@@ -1447,6 +1449,14 @@ static int dwc3_gadget_wakeup(struct usb_gadget *g)
ret = -EINVAL;
}
+ /*
+ * According to DWC3 databook, the controller does not
+ * trigger a wakeup event when remote-wakeup is used.
+ * Hence, after remote-wakeup sequence is complete, and
+ * the device is back at U0 state, it is required that
+ * the resume sequence is initiated by SW.
+ */
+ dwc3_gadget_wakeup_interrupt(dwc);
out:
spin_unlock_irqrestore(&dwc->lock, flags);