diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 97477c3dc244..903c4fa20308 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1997,12 +1997,13 @@ static int dwc3_resume(struct device *dev) /* Check if platform glue driver handling PM, if not then handle here */ if (!dwc3_notify_event(dwc, DWC3_CORE_PM_RESUME_EVENT, 0)) { /* - * If the core was in host mode during suspend, then set the - * runtime PM state as active to reflect actual state of device - * which is now out of LPM. This allows runtime_suspend later. + * If the core was in host mode during suspend, then perform + * runtime resume which will do resume and set the runtime PM + * state as active to reflect actual state of device which + * is now out of LPM. This allows runtime_suspend later. */ if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST) - goto runtime_set_active; + pm_runtime_resume(dev); return 0; } @@ -2013,11 +2014,6 @@ static int dwc3_resume(struct device *dev) if (ret) return ret; -runtime_set_active: - pm_runtime_disable(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); - return 0; } #endif /* CONFIG_PM_SLEEP */ diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 575a31ec9600..83d088d5d457 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -436,10 +436,9 @@ static int xhci_plat_resume(struct device *dev) if (ret) return ret; - ret = xhci_resume(xhci, false); - pm_runtime_disable(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); + ret = pm_runtime_resume(dev); + if (ret) + dev_err(dev, "failed to resume xhci-plat (%d)\n", ret); return ret; }