ASoC: mediatek: mt8173: Fix clock error handling
Subsystems (3)
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
@@ -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
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
@@ -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
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
@@ -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
Mark Brown
maintainerQuoted 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