Skip to contentSkip to conversation

ASoC: mediatek: mt8173: Fix clock error handling

PATCH In review [email protected] 2 participants 4 messages Aug 18 – Sep 1

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 ASoC: mediatek: mt8173: Fix clock error handling

From: bui duc phuc <[email protected]>

The error handling paths in mt8173_afe_runtime_resume() use incorrect labels, specifically err_i2s1_m and err_i2s2_m.
When clk_prepare_enable() fails, the code jumps to a label that calls clk_disable_unprepare() on the clock that failed to enable. Instead, it should call clk_disable_unprepare() on the clock that was successfully enabled before the failure.

Fix the labels and clk_disable_unprepare() calls to ensure the error cleanup is handled correctly.

---
 sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c +4 -4
index 69cadc91c97f..b4c6ef6f0845 100644
@@ -997,10 +997,10 @@ static int mt8173_afe_runtime_resume(struct device *dev)
 		goto err_bck0;
 	ret = clk_prepare_enable(afe_priv->clocks[MT8173_CLK_I2S1_M]);
 	if (ret)
-		goto err_i2s1_m;
+		goto err_bck1;
 	ret = clk_prepare_enable(afe_priv->clocks[MT8173_CLK_I2S2_M]);
 	if (ret)
-		goto err_i2s2_m;
+		goto err_i2s1_m;
 
 	/* enable AFE clk */
 	regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, AUD_TCON0_PDN_AFE, 0);
@@ -1018,8 +1018,8 @@ static int mt8173_afe_runtime_resume(struct device *dev)
 
 err_i2s1_m:
 	clk_disable_unprepare(afe_priv->clocks[MT8173_CLK_I2S1_M]);
-err_i2s2_m:
-	clk_disable_unprepare(afe_priv->clocks[MT8173_CLK_I2S2_M]);
+err_bck1:
+	clk_disable_unprepare(afe_priv->clocks[MT8173_CLK_BCK1]);
 err_bck0:
 	clk_disable_unprepare(afe_priv->clocks[MT8173_CLK_BCK0]);
 err_top_aud:
Signature · 1 line
2.43.0
#1 lore raw

PATCH 2/3 ASoC: mediatek: mt8173: Use dev_err_probe() for error handling

From: bui duc phuc <[email protected]>

Replace dev_err() with dev_err_probe() to prevent log spam when probe returns -EPROBE_DEFER.

---
 sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c +3 -5
index b4c6ef6f0845..b7c4b24a9cad 100644
@@ -1038,11 +1038,9 @@ static int mt8173_afe_init_audio_clk(struct mtk_base_afe *afe)
 
 	for (i = 0; i < ARRAY_SIZE(aud_clks); i++) {
 		afe_priv->clocks[i] = devm_clk_get(afe->dev, aud_clks[i]);
-		if (IS_ERR(afe_priv->clocks[i])) {
-			dev_err(afe->dev, "%s devm_clk_get %s fail\n",
-				__func__, aud_clks[i]);
-			return PTR_ERR(afe_priv->clocks[i]);
-		}
+		if (IS_ERR(afe_priv->clocks[i]))
+			return dev_err_probe(afe->dev, PTR_ERR(afe_priv->clocks[i]),
+					     "failed to get clock %s\n", aud_clks[i]);
 	}
 	clk_set_rate(afe_priv->clocks[MT8173_CLK_BCK0], 22579200); /* 22M */
 	clk_set_rate(afe_priv->clocks[MT8173_CLK_BCK1], 24576000); /* 24M */
Signature · 1 line
2.43.0
#2 lore raw

PATCH 3/3 ASoC: mediatek: mt8173: Drop redundant probe error messages

In reply to [email protected]

From: bui duc phuc <[email protected]>

The errors handled here are already reported by the called functions, either directly or deeper in the call chain. Therefore, the additional dev_err() calls are redundant and can be removed.

---
 sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c +2 -6
index b7c4b24a9cad..c2421f17375b 100644
@@ -1091,10 +1091,8 @@ static int mt8173_afe_pcm_dev_probe(struct platform_device *pdev)
 
 	/* initial audio related clock */
 	ret = mt8173_afe_init_audio_clk(afe);
-	if (ret) {
-		dev_err(dev, "mt8173_afe_init_audio_clk fail\n");
+	if (ret)
 		return ret;
-	}
 
 	/* memif % irq initialize*/
 	afe->memif_size = MT8173_AFE_MEMIF_NUM;
@@ -1154,10 +1152,8 @@ static int mt8173_afe_pcm_dev_probe(struct platform_device *pdev)
 
 	ret = devm_request_irq(dev, irq_id, mt8173_afe_irq_handler,
 			       0, "Afe_ISR_Handle", (void *)afe);
-	if (ret) {
-		dev_err(dev, "could not request_irq\n");
+	if (ret)
 		goto err_cleanup_components;
-	}
 
 	dev_info(dev, "MT8173 AFE driver initialized.\n");
 	return 0;
Signature · 1 line
2.43.0
maintainer
#3 lore raw
In reply to [email protected]
Quoted 1 line · On Tue, 18 Aug 2026 17:43:42 +0700, [email protected] wrote:

ASoC: mediatek: mt8173: Fix clock error handling

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.4

Thanks!

[1/3] ASoC: mediatek: mt8173: Fix clock error handling

      https://git.kernel.org/broonie/sound/c/7635a23cd6e7
[2/3] ASoC: mediatek: mt8173: Use dev_err_probe() for error handling
      https://git.kernel.org/broonie/sound/c/7bcdd38eb502
[3/3] ASoC: mediatek: mt8173: Drop redundant probe error messages
      https://git.kernel.org/broonie/sound/c/15b975f173f1

All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying to this mail.

Thanks,
Mark