diff options
author | Ajay Agarwal <ajaya@codeaurora.org> | 2018-09-26 17:12:10 +0530 |
---|---|---|
committer | Ajay Agarwal <ajaya@codeaurora.org> | 2018-09-26 17:12:10 +0530 |
commit | f2ace9fb59b692eba2db39be3a13e064d8bf3c4e (patch) | |
tree | f5490f6e0f2e52c66019a740ca22ed1ca7112bd1 /drivers/usb/dwc3 | |
parent | aa0ebdfe2d12829d8ee6dde5e841e1c67c9141c2 (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.c | 10 |
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; |