[PATCH 13/14] ASoC: mediatek: mt8195: Fix ETDM probe error handling
From: phucduc . bui
Date: Fri Sep 25 2026 - 00:53:59 EST
From: bui duc phuc <phucduc.bui@xxxxxxxxx>
Use pm_runtime_resume_and_get() to properly handle runtime PM errors
during ETDM probe.
Propagate errors from MCLK configuration and enabling instead of
ignoring them.
Fixes: 1de9a54acafb ("ASoC: mediatek: mt8195: support etdm in platform driver")
Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/mediatek/mt8195/mt8195-dai-etdm.c | 27 ++++++++++++++-------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
index 11317cdd14ab..8fa830a57502 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
@@ -2503,6 +2503,7 @@ static int mtk_dai_etdm_probe(struct snd_soc_dai *dai)
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
struct mtk_dai_etdm_priv *etdm_data;
+ int ret;
dev_dbg(dai->dev, "%s id %d\n", __func__, dai->id);
@@ -2510,15 +2511,23 @@ static int mtk_dai_etdm_probe(struct snd_soc_dai *dai)
return -EINVAL;
etdm_data = afe_priv->dai_priv[dai->id];
- if (etdm_data->mclk_freq) {
- dev_dbg(afe->dev, "MCLK always on, rate %d\n",
- etdm_data->mclk_freq);
- pm_runtime_get_sync(afe->dev);
- mtk_dai_etdm_mclk_configure(afe, dai->id);
- mtk_dai_etdm_enable_mclk(afe, dai->id);
- pm_runtime_put_sync(afe->dev);
- }
- return 0;
+ if (!etdm_data->mclk_freq)
+ return 0;
+
+ dev_dbg(afe->dev, "MCLK always on, rate %d\n",
+ etdm_data->mclk_freq);
+ ret = pm_runtime_resume_and_get(afe->dev);
+ if (ret)
+ return ret;
+ ret = mtk_dai_etdm_mclk_configure(afe, dai->id);
+ if (ret)
+ goto err_put_pm;
+ ret = mtk_dai_etdm_enable_mclk(afe, dai->id);
+
+err_put_pm:
+ pm_runtime_put_sync(afe->dev);
+
+ return ret;
}
static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops = {
--
2.43.0