From d515ac10ccecbf4c70b19b3679d81d727614656e Mon Sep 17 00:00:00 2001 From: Chiranjeevi Velempati Date: Tue, 22 May 2012 12:08:13 +0530 Subject: [PATCH] USB: msm72k_otg: Fix USB LPM issue during system suspend Runtime PM ops are used to put USB into LPM and get it out of LPM. During system suspend, runtime PM is disabled. Hence connecting USB cable doesn't get USB out of LPM. Fix this issue, by checking runtime PM availability and based on it, use direct driver's resume function or runtime PM resume function. CRs-Fixed: 358239 Change-Id: I6dfe10a245654c8191eb4fce2f5ac33c95b043a2 Signed-off-by: Chiranjeevi Velempati --- drivers/usb/otg/msm72k_otg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/usb/otg/msm72k_otg.c b/drivers/usb/otg/msm72k_otg.c index 0ee1827388f..891a4e27177 100644 --- a/drivers/usb/otg/msm72k_otg.c +++ b/drivers/usb/otg/msm72k_otg.c @@ -889,7 +889,13 @@ static void msm_otg_resume_w(struct work_struct *w) if (can_phy_power_collapse(dev) && dev->pdata->ldo_enable) dev->pdata->ldo_enable(1); - msm_otg_get_resume(dev); + if (pm_runtime_enabled(dev->otg.dev)) { + msm_otg_get_resume(dev); + } else { + pm_runtime_get_noresume(dev->otg.dev); + msm_otg_resume(dev); + pm_runtime_set_active(dev->otg.dev); + } if (!is_phy_clk_disabled()) goto phy_resumed;