Merge "soundwire: exit from pm function for LPASS HW Core fails"

This commit is contained in:
qctecmdr 2019-06-17 20:30:33 -07:00 • committed by Gerrit - the friendly Code Review server
commit e7afbdeeb6

View file

@ -2302,6 +2302,7 @@ static int swrm_runtime_resume(struct device *dev)
struct platform_device *pdev = to_platform_device(dev);
struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev);
int ret = 0;
bool clk_err = false;
struct swr_master *mstr = &swrm->master;
struct swr_device *swr_dev;
@ -2315,6 +2316,7 @@ static int swrm_runtime_resume(struct device *dev)
dev_err(dev, "%s:lpass core hw enable failed\n",
__func__);
ret = 0;
clk_err = true;
}
}
@ -2362,7 +2364,7 @@ static int swrm_runtime_resume(struct device *dev)
swrm->state = SWR_MSTR_UP;
}
exit:
if (swrm->lpass_core_hw_vote)
if (swrm->lpass_core_hw_vote && !clk_err)
clk_disable_unprepare(swrm->lpass_core_hw_vote);
pm_runtime_set_autosuspend_delay(&pdev->dev, auto_suspend_timer);
mutex_unlock(&swrm->reslock);
@ -2374,6 +2376,7 @@ static int swrm_runtime_suspend(struct device *dev)
struct platform_device *pdev = to_platform_device(dev);
struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev);
int ret = 0;
bool clk_err = false;
struct swr_master *mstr = &swrm->master;
struct swr_device *swr_dev;
int current_state = 0;
@ -2390,6 +2393,7 @@ static int swrm_runtime_suspend(struct device *dev)
dev_err(dev, "%s:lpass core hw enable failed\n",
__func__);
ret = 0;
clk_err = true;
}
}
@ -2443,7 +2447,7 @@ static int swrm_runtime_suspend(struct device *dev)
if (current_state != SWR_MSTR_SSR)
swrm->state = SWR_MSTR_DOWN;
exit:
if (swrm->lpass_core_hw_vote)
if (swrm->lpass_core_hw_vote && !clk_err)
clk_disable_unprepare(swrm->lpass_core_hw_vote);
mutex_unlock(&swrm->reslock);
return ret;