summaryrefslogtreecommitdiff
path: root/drivers/usb/dwc3
diff options
context:
space:
mode:
authorAjay Agarwal <ajaya@codeaurora.org>2018-09-26 17:12:10 +0530
committerAjay Agarwal <ajaya@codeaurora.org>2018-09-26 17:12:10 +0530
commitf2ace9fb59b692eba2db39be3a13e064d8bf3c4e (patch)
treef5490f6e0f2e52c66019a740ca22ed1ca7112bd1 /drivers/usb/dwc3
parentaa0ebdfe2d12829d8ee6dde5e841e1c67c9141c2 (diff)
usb: dwc3-msm: Release PM wakelock in host mode only for auto targets
Currently the driver releases PM wakelock in host mode. This causes pm_suspend to get triggered. Although pm_suspend bails out but xhci_bus_suspend transitions the bus to a bad state leading to host mode failure. Fix this by releasing wakelock only for targets on which we allow PM suspend in host mode irrespective of runtimePM. Change-Id: I6648991272c0f22b032b526bce3a76864fec63a5 Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r--drivers/usb/dwc3/dwc3-msm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
index dc06f4818e39..920555c64af4 100644
--- a/drivers/usb/dwc3/dwc3-msm.c
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -3969,7 +3969,10 @@ static void dwc3_otg_sm_work(struct work_struct *w)
mdwc->otg_state = OTG_STATE_A_IDLE;
goto ret;
}
- pm_wakeup_event(mdwc->dev, DWC3_WAKEUP_SRC_TIMEOUT);
+ if (mdwc->no_wakeup_src_in_hostmode) {
+ pm_wakeup_event(mdwc->dev,
+ DWC3_WAKEUP_SRC_TIMEOUT);
+ }
}
break;
@@ -3987,7 +3990,10 @@ static void dwc3_otg_sm_work(struct work_struct *w)
dbg_event(0xFF, "XHCIResume", 0);
if (dwc)
pm_runtime_resume(&dwc->xhci->dev);
- pm_wakeup_event(mdwc->dev, DWC3_WAKEUP_SRC_TIMEOUT);
+ if (mdwc->no_wakeup_src_in_hostmode) {
+ pm_wakeup_event(mdwc->dev,
+ DWC3_WAKEUP_SRC_TIMEOUT);
+ }
}
break;