[PATCH 10/10] ASoC: mediatek: mt8196: propagate TDM clock errors

From: phucduc . bui

Date: Tue Sep 29 2026 - 02:13:33 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

Propagate errors from BCK and MCK clock operations in the DAPM event
callbacks instead of always returning success.

Fixes: ede4d841111a ("ASoC: mediatek: mt8196: support TDM in platform driver")
Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/mediatek/mt8196/mt8196-dai-tdm.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/sound/soc/mediatek/mt8196/mt8196-dai-tdm.c b/sound/soc/mediatek/mt8196/mt8196-dai-tdm.c
index b7aeee939d88..44bd08f5c1fb 100644
--- a/sound/soc/mediatek/mt8196/mt8196-dai-tdm.c
+++ b/sound/soc/mediatek/mt8196/mt8196-dai-tdm.c
@@ -256,22 +256,24 @@ static int mtk_tdm_bck_en_event(struct snd_soc_dapm_widget *w,
struct mt8196_afe_private *afe_priv = afe->platform_priv;
int dai_id = get_tdm_id_by_name(w->name);
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
+ int ret;

dev_dbg(cmpnt->dev, "name %s, event 0x%x, dai_id %d\n",
w->name, event, dai_id);

switch (event) {
case SND_SOC_DAPM_PRE_PMU:
- mt8196_mck_enable(afe, tdm_priv->bck_id, tdm_priv->bck_rate);
+ ret = mt8196_mck_enable(afe, tdm_priv->bck_id, tdm_priv->bck_rate);
break;
case SND_SOC_DAPM_POST_PMD:
- mt8196_mck_disable(afe, tdm_priv->bck_id);
+ ret = mt8196_mck_disable(afe, tdm_priv->bck_id);
break;
default:
+ ret = 0;
break;
}

- return 0;
+ return ret;
}

static int mtk_tdm_mck_en_event(struct snd_soc_dapm_widget *w,
@@ -283,23 +285,25 @@ static int mtk_tdm_mck_en_event(struct snd_soc_dapm_widget *w,
struct mt8196_afe_private *afe_priv = afe->platform_priv;
int dai_id = get_tdm_id_by_name(w->name);
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
+ int ret;

dev_dbg(cmpnt->dev, "name %s, event 0x%x, dai_id %d\n",
w->name, event, dai_id);

switch (event) {
case SND_SOC_DAPM_PRE_PMU:
- mt8196_mck_enable(afe, tdm_priv->mclk_id, tdm_priv->mclk_rate);
+ ret = mt8196_mck_enable(afe, tdm_priv->mclk_id, tdm_priv->mclk_rate);
break;
case SND_SOC_DAPM_POST_PMD:
tdm_priv->mclk_rate = 0;
- mt8196_mck_disable(afe, tdm_priv->mclk_id);
+ ret = mt8196_mck_disable(afe, tdm_priv->mclk_id);
break;
default:
+ ret = 0;
break;
}

- return 0;
+ return ret;
}

static const struct snd_soc_dapm_widget mtk_dai_tdm_widgets[] = {
--
2.43.0