It seems pm_runtime_put calls runtime_idle callback not runtime_suspend 
callback.
It's better to use pm_runtime_put_sync_suspend to allow DWC3 runtime suspend.

Signed-off-by: Daehwan Jung <[email protected]>
---
 drivers/usb/dwc3/gadget.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index aebcf8e..4a4b93b 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2229,7 +2229,7 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int 
is_on)
         */
        ret = pm_runtime_get_sync(dwc->dev);
        if (!ret || ret < 0) {
-               pm_runtime_put(dwc->dev);
+               pm_runtime_put_sync_suspend(dwc->dev);
                return 0;
        }
 
-- 
2.7.4

Reply via email to