asoc: lpass-cdc: call runtime_suspend when vote fails

During adsp SSR, after adsp is down, lpass_cdc_runtime_resume
is called in va-marco and fails. lpass_cdc_runtime_suspend is
not called 100ms later. After adsp is up and va-macro considers
lpass_cdc is resumed and not setting clk which causes wcd not
detected. Call runtime_suspend when vote fails to resolve
the issue.

Change-Id: Ice398d0168c5c67f6c98e3122af507ca74837175
Signed-off-by: Meng Wang <mengw@codeaurora.org>
This commit is contained in:
Meng Wang
2021-06-28 13:10:48 +08:00
parent 671d354cf5
commit 7fea7ac663

View File

@@ -711,10 +711,13 @@ static int lpass_cdc_va_macro_core_vote(void *handle, bool enable)
}
if (enable) {
pm_runtime_get_sync(va_priv->dev);
if (lpass_cdc_check_core_votes(va_priv->dev))
if (lpass_cdc_check_core_votes(va_priv->dev)) {
rc = 0;
else
} else {
pm_runtime_put_autosuspend(va_priv->dev);
pm_runtime_mark_last_busy(va_priv->dev);
rc = -ENOTSYNC;
}
} else {
pm_runtime_put_autosuspend(va_priv->dev);
pm_runtime_mark_last_busy(va_priv->dev);