diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c index b2868e9c2204..d2f464e676e2 100644 --- a/soc/swr-mstr-ctrl.c +++ b/soc/swr-mstr-ctrl.c @@ -3243,16 +3243,19 @@ static int swrm_runtime_suspend(struct device *dev) swrm->ipc_wakeup_triggered = false; } } - } - if (swrm_request_hw_vote(swrm, LPASS_AUDIO_CORE, false)) - dev_dbg(dev, "%s:lpass audio hw enable failed\n", - __func__); /* Retain SSR state until resume */ if (current_state != SWR_MSTR_SSR) swrm->state = SWR_MSTR_DOWN; + exit: + if (current_state != SWR_MSTR_UP) { + if (swrm_request_hw_vote(swrm, LPASS_AUDIO_CORE, false)) + dev_dbg(dev, "%s:lpass audio hw enable failed\n", + __func__); + } + if (!hw_core_err) swrm_request_hw_vote(swrm, LPASS_HW_CORE, false); mutex_unlock(&swrm->reslock);