From 15d7afdbd054077de60456b7875a115f9da975dd Mon Sep 17 00:00:00 2001 From: Mayank Rana Date: Tue, 19 Apr 2022 11:30:38 -0700 Subject: [PATCH] dwc3-msm-core: Perform runtime resume with dwc3 dev instead of mdwc mdwc device (a600000.ssusb) is parent to dwc3 device (a600000.dwc3). With stop host mode, commit b10349def39c ("usb: dwc3-msm: Handle potential errors in dwc3_msm_resume") is resuming mdwc device instead of dwc3 device which is updating usage count wrongly causing mdwc device to stay as runtime active. This result into no runtime idle schedule to put mdwc device into low power mode causing switching from host mode to device mode failure. Change-Id: I2f0a6ce06cef90b22bfb5b9a2e000857a5cc0281 Signed-off-by: Mayank Rana --- drivers/usb/dwc3/dwc3-msm-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/dwc3-msm-core.c b/drivers/usb/dwc3/dwc3-msm-core.c index f6a9ed1c141d..7b77b936e720 100644 --- a/drivers/usb/dwc3/dwc3-msm-core.c +++ b/drivers/usb/dwc3/dwc3-msm-core.c @@ -6343,9 +6343,10 @@ static int dwc3_otg_start_host(struct dwc3_msm *mdwc, int on) msm_dwc3_perf_vote_update(mdwc, false); cpu_latency_qos_remove_request(&mdwc->pm_qos_req_dma); - ret = pm_runtime_resume_and_get(mdwc->dev); + ret = pm_runtime_resume_and_get(&mdwc->dwc3->dev); if (ret < 0) { dev_err(mdwc->dev, "%s: pm_runtime_resume_and_get failed\n", __func__); + pm_runtime_set_suspended(&mdwc->dwc3->dev); pm_runtime_set_suspended(mdwc->dev); return ret; }