diff options
| -rw-r--r-- | drivers/usb/dwc3/gadget.c | 10 |
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); |
