diff options
Diffstat (limited to 'drivers/usb/dwc3/dwc3-msm.c')
| -rw-r--r-- | drivers/usb/dwc3/dwc3-msm.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index 7fec7b8e4dd9..b6b25c75b80c 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -2239,7 +2239,7 @@ static int dwc3_msm_suspend(struct dwc3_msm *mdwc, bool hibernation) /* kick_sm if it is waiting for lpm sequence to finish */ if (test_and_clear_bit(WAIT_FOR_LPM, &mdwc->inputs)) - schedule_delayed_work(&mdwc->sm_work, 0); + queue_delayed_work(mdwc->sm_usb_wq, &mdwc->sm_work, 0); mutex_unlock(&mdwc->suspend_resume_mutex); @@ -2335,6 +2335,12 @@ static int dwc3_msm_resume(struct dwc3_msm *mdwc) /* Resume HS PHY */ usb_phy_set_suspend(mdwc->hs_phy, 0); + /* Disable HSPHY auto suspend */ + dwc3_msm_write_reg(mdwc->base, DWC3_GUSB2PHYCFG(0), + dwc3_msm_read_reg(mdwc->base, DWC3_GUSB2PHYCFG(0)) & + ~(DWC3_GUSB2PHYCFG_ENBLSLPM | + DWC3_GUSB2PHYCFG_SUSPHY)); + /* Recover from controller power collapse */ if (mdwc->lpm_flags & MDWC3_POWER_COLLAPSE) { dev_dbg(mdwc->dev, "%s: exit power collapse\n", __func__); @@ -2349,12 +2355,6 @@ static int dwc3_msm_resume(struct dwc3_msm *mdwc) /* enable power evt irq for IN P3 detection */ enable_irq(mdwc->pwr_event_irq); - /* Disable HSPHY auto suspend */ - dwc3_msm_write_reg(mdwc->base, DWC3_GUSB2PHYCFG(0), - dwc3_msm_read_reg(mdwc->base, DWC3_GUSB2PHYCFG(0)) & - ~(DWC3_GUSB2PHYCFG_ENBLSLPM | - DWC3_GUSB2PHYCFG_SUSPHY)); - /* Disable wakeup capable for HS_PHY IRQ & SS_PHY_IRQ if enabled */ if (mdwc->lpm_flags & MDWC3_ASYNC_IRQ_WAKE_CAPABILITY) { if (!mdwc->no_wakeup_src_in_hostmode) @@ -3764,8 +3764,7 @@ static int dwc3_otg_start_host(struct dwc3_msm *mdwc, int on) /* wait for LPM, to ensure h/w is reset after stop_host */ set_bit(WAIT_FOR_LPM, &mdwc->inputs); - pm_runtime_mark_last_busy(mdwc->dev); - pm_runtime_put_sync_autosuspend(mdwc->dev); + pm_runtime_put_sync_suspend(mdwc->dev); dbg_event(0xFF, "StopHost psync", atomic_read(&mdwc->dev->power.usage_count)); } |
