asoc: update digital_cdc_rsc_mgr_hw_vote API

Update digital_cdc_rsc_mgr_hw_vote_enable/disable API with device
info for easy debug. Also, add swrm clock enable checks during SSR.
When SSR happens, swrm->hw_core_clk_en and swrm->aud_core_clk_en will
be reset without resetting audio_vote and core_vote clk. This would
cause clk mismatch in audio driver and adsp and device fails suspending
when there's no audio usecase. Make this change to reset audio_vote
and core_vote clk when receiving SWR_DEVICE_SSR_DOWN.

Change-Id: I9875aac9f6faf8b6481457a70f31b005073369e0
Signed-off-by: Meng Wang <quic_mengw@quicinc.com>
这个提交包含在:
Meng Wang
2021-12-21 09:12:31 +08:00
提交者 Gerrit - the friendly Code Review server
父节点 42e49611b0
当前提交 95c95b2d67
修改 6 个文件,包含 34 行新增22 行删除

查看文件

@@ -1383,7 +1383,7 @@ int lpass_cdc_runtime_resume(struct device *dev)
}
if (priv->core_hw_vote_count == 0) {
ret = digital_cdc_rsc_mgr_hw_vote_enable(priv->lpass_core_hw_vote);
ret = digital_cdc_rsc_mgr_hw_vote_enable(priv->lpass_core_hw_vote, dev);
if (ret < 0) {
dev_err_ratelimited(dev, "%s:lpass core hw enable failed\n",
__func__);
@@ -1401,7 +1401,7 @@ audio_vote:
}
if (priv->core_audio_vote_count == 0) {
ret = digital_cdc_rsc_mgr_hw_vote_enable(priv->lpass_audio_hw_vote);
ret = digital_cdc_rsc_mgr_hw_vote_enable(priv->lpass_audio_hw_vote, dev);
if (ret < 0) {
dev_err_ratelimited(dev, "%s:lpass audio hw enable failed\n",
__func__);
@@ -1429,7 +1429,7 @@ int lpass_cdc_runtime_suspend(struct device *dev)
if (priv->lpass_core_hw_vote != NULL) {
if (--priv->core_hw_vote_count == 0)
digital_cdc_rsc_mgr_hw_vote_disable(
priv->lpass_core_hw_vote);
priv->lpass_core_hw_vote, dev);
if (priv->core_hw_vote_count < 0)
priv->core_hw_vote_count = 0;
} else {
@@ -1442,7 +1442,7 @@ int lpass_cdc_runtime_suspend(struct device *dev)
if (priv->lpass_audio_hw_vote != NULL) {
if (--priv->core_audio_vote_count == 0)
digital_cdc_rsc_mgr_hw_vote_disable(
priv->lpass_audio_hw_vote);
priv->lpass_audio_hw_vote, dev);
if (priv->core_audio_vote_count < 0)
priv->core_audio_vote_count = 0;
} else {