* [PATCH 1/4] ASoC: mediatek: mt8183: Fix wrong clock cleanup on clk_set_parent() failure
@ 2026-08-19 10:18 phucduc.bui
2026-08-19 10:18 ` [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling phucduc.bui
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: phucduc.bui @ 2026-08-19 10:18 UTC (permalink / raw)
To: Mark Brown, Matthias Brugger
Cc: Liam Girdwood, AngeloGioacchino Del Regno, Jaroslav Kysela,
Takashi Iwai, Cezary Rojewski, linux-sound, linux-arm-kernel,
linux-mediatek, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
In mt8183_afe_enable_clock(), when clk_set_parent() fails, the current
error path incorrectly cleans up the previously enabled clock instead of
the clock used by clk_set_parent().
Fix the error path to clean up the correct clock when clk_set_parent()
fails.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/mediatek/mt8183/mt8183-afe-clk.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
index cc4f8f4d3dab..6ab0734ad136 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
@@ -137,7 +137,7 @@ int mt8183_afe_enable_clock(struct mtk_base_afe *afe)
dev_err(afe->dev, "%s(), clk_set_parent %s-%s fail %d\n",
__func__, aud_clks[CLK_MUX_AUDIO],
aud_clks[CLK_CLK26M], ret);
- goto CLK_MUX_AUDIO_ERR;
+ goto CLK_MUX_AUDIO_INTBUS_ERR;
}
ret = clk_prepare_enable(afe_priv->clk[CLK_MUX_AUDIOINTBUS]);
@@ -153,7 +153,7 @@ int mt8183_afe_enable_clock(struct mtk_base_afe *afe)
dev_err(afe->dev, "%s(), clk_set_parent %s-%s fail %d\n",
__func__, aud_clks[CLK_MUX_AUDIOINTBUS],
aud_clks[CLK_TOP_SYSPLL_D2_D4], ret);
- goto CLK_MUX_AUDIO_INTBUS_ERR;
+ goto CLK_AFE_ERR;
}
ret = clk_prepare_enable(afe_priv->clk[CLK_AFE]);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling
2026-08-19 10:18 [PATCH 1/4] ASoC: mediatek: mt8183: Fix wrong clock cleanup on clk_set_parent() failure phucduc.bui
@ 2026-08-19 10:18 ` phucduc.bui
2026-08-19 16:05 ` Mark Brown
2026-08-19 10:18 ` [PATCH 3/4] ASoC: mediatek: mt8183: Use dev_err_probe() for " phucduc.bui
2026-08-19 10:18 ` [PATCH 4/4] ASoC: mediatek: mt8183: Drop redundant probe error messages phucduc.bui
2 siblings, 1 reply; 5+ messages in thread
From: phucduc.bui @ 2026-08-19 10:18 UTC (permalink / raw)
To: Mark Brown, Matthias Brugger
Cc: Liam Girdwood, AngeloGioacchino Del Regno, Jaroslav Kysela,
Takashi Iwai, Cezary Rojewski, linux-sound, linux-arm-kernel,
linux-mediatek, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
Currently, the mt8183_apll*_enable() functions call mux_setting(afe, true)
but do not check its return value to handle failures.
In addition, the cleanup paths of mt8183_apll*_enable() do not call
mux_setting(afe, false) when the enable operation fails, while the
mt8183_apll*_disable() functions do.
Add error handling for apll*_mux_setting() and call mux_setting(afe, false)
in the cleanup paths when mt8183_apll*_enable() fails.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/mediatek/mt8183/mt8183-afe-clk.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
index 6ab0734ad136..260c27016cc0 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
@@ -382,7 +382,12 @@ int mt8183_apll1_enable(struct mtk_base_afe *afe)
int ret;
/* setting for APLL */
- apll1_mux_setting(afe, true);
+ ret = apll1_mux_setting(afe, true);
+ if (ret) {
+ dev_err(afe->dev, "%s apll1_mux_setting fail %d\n",
+ __func__, ret);
+ goto ERR_APLL1_MUX_SETTING;
+ }
ret = clk_prepare_enable(afe_priv->clk[CLK_APLL22M]);
if (ret) {
@@ -411,6 +416,8 @@ int mt8183_apll1_enable(struct mtk_base_afe *afe)
ERR_CLK_APLL1_TUNER:
clk_disable_unprepare(afe_priv->clk[CLK_APLL22M]);
ERR_CLK_APLL22M:
+ apll1_mux_setting(afe, false);
+ERR_APLL1_MUX_SETTING:
return ret;
}
@@ -436,7 +443,12 @@ int mt8183_apll2_enable(struct mtk_base_afe *afe)
int ret;
/* setting for APLL */
- apll2_mux_setting(afe, true);
+ ret = apll2_mux_setting(afe, true);
+ if (ret) {
+ dev_err(afe->dev, "%s apll2_mux_setting fail %d\n",
+ __func__, ret);
+ goto ERR_APLL2_MUX_SETTING;
+ }
ret = clk_prepare_enable(afe_priv->clk[CLK_APLL24M]);
if (ret) {
@@ -465,6 +477,8 @@ int mt8183_apll2_enable(struct mtk_base_afe *afe)
ERR_CLK_APLL2_TUNER:
clk_disable_unprepare(afe_priv->clk[CLK_APLL24M]);
ERR_CLK_APLL24M:
+ apll2_mux_setting(afe, false);
+ERR_APLL2_MUX_SETTING:
return ret;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] ASoC: mediatek: mt8183: Use dev_err_probe() for error handling
2026-08-19 10:18 [PATCH 1/4] ASoC: mediatek: mt8183: Fix wrong clock cleanup on clk_set_parent() failure phucduc.bui
2026-08-19 10:18 ` [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling phucduc.bui
@ 2026-08-19 10:18 ` phucduc.bui
2026-08-19 10:18 ` [PATCH 4/4] ASoC: mediatek: mt8183: Drop redundant probe error messages phucduc.bui
2 siblings, 0 replies; 5+ messages in thread
From: phucduc.bui @ 2026-08-19 10:18 UTC (permalink / raw)
To: Mark Brown, Matthias Brugger
Cc: Liam Girdwood, AngeloGioacchino Del Regno, Jaroslav Kysela,
Takashi Iwai, Cezary Rojewski, linux-sound, linux-arm-kernel,
linux-mediatek, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
Replace dev_err() with dev_err_probe() to prevent log spam when probe
returns -EPROBE_DEFER.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/mediatek/mt8183/mt8183-afe-clk.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
index 260c27016cc0..d532aa8107b0 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
@@ -101,12 +101,9 @@ int mt8183_init_clock(struct mtk_base_afe *afe)
for (i = 0; i < CLK_NUM; i++) {
afe_priv->clk[i] = devm_clk_get(afe->dev, aud_clks[i]);
- if (IS_ERR(afe_priv->clk[i])) {
- dev_err(afe->dev, "%s(), devm_clk_get %s fail, ret %ld\n",
- __func__, aud_clks[i],
- PTR_ERR(afe_priv->clk[i]));
- return PTR_ERR(afe_priv->clk[i]);
- }
+ if (IS_ERR(afe_priv->clk[i]))
+ return dev_err_probe(afe->dev, PTR_ERR(afe_priv->clk[i]),
+ "failed to get clock %s\n", aud_clks[i]);
}
return 0;
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] ASoC: mediatek: mt8183: Drop redundant probe error messages
2026-08-19 10:18 [PATCH 1/4] ASoC: mediatek: mt8183: Fix wrong clock cleanup on clk_set_parent() failure phucduc.bui
2026-08-19 10:18 ` [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling phucduc.bui
2026-08-19 10:18 ` [PATCH 3/4] ASoC: mediatek: mt8183: Use dev_err_probe() for " phucduc.bui
@ 2026-08-19 10:18 ` phucduc.bui
2 siblings, 0 replies; 5+ messages in thread
From: phucduc.bui @ 2026-08-19 10:18 UTC (permalink / raw)
To: Mark Brown, Matthias Brugger
Cc: Liam Girdwood, AngeloGioacchino Del Regno, Jaroslav Kysela,
Takashi Iwai, Cezary Rojewski, linux-sound, linux-arm-kernel,
linux-mediatek, linux-kernel, bui duc phuc
From: bui duc phuc <phucduc.bui@gmail.com>
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.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
index 2634699534db..46b7a2bb6aaa 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
@@ -809,10 +809,8 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev)
/* initial audio related clock */
ret = mt8183_init_clock(afe);
- if (ret) {
- dev_err(dev, "init clock error\n");
+ if (ret)
return ret;
- }
pm_runtime_enable(dev);
@@ -903,10 +901,8 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, irq_id, mt8183_afe_irq_handler,
IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
- if (ret) {
- dev_err(dev, "could not request_irq for asys-isr\n");
+ if (ret)
goto err_pm_disable;
- }
/* init sub_dais */
INIT_LIST_HEAD(&afe->sub_dais);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling
2026-08-19 10:18 ` [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling phucduc.bui
@ 2026-08-19 16:05 ` Mark Brown
0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2026-08-19 16:05 UTC (permalink / raw)
To: phucduc.bui
Cc: Matthias Brugger, Liam Girdwood, AngeloGioacchino Del Regno,
Jaroslav Kysela, Takashi Iwai, Cezary Rojewski, linux-sound,
linux-arm-kernel, linux-mediatek, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 866 bytes --]
On Wed, Aug 19, 2026 at 05:18:47PM +0700, phucduc.bui@gmail.com wrote:
> From: bui duc phuc <phucduc.bui@gmail.com>
>
> Currently, the mt8183_apll*_enable() functions call mux_setting(afe, true)
> but do not check its return value to handle failures.
>
> In addition, the cleanup paths of mt8183_apll*_enable() do not call
> mux_setting(afe, false) when the enable operation fails, while the
> mt8183_apll*_disable() functions do.
>
> Add error handling for apll*_mux_setting() and call mux_setting(afe, false)
> in the cleanup paths when mt8183_apll*_enable() fails.
> - apll1_mux_setting(afe, true);
> + ret = apll1_mux_setting(afe, true);
> + if (ret) {
> + dev_err(afe->dev, "%s apll1_mux_setting fail %d\n",
> + __func__, ret);
> + goto ERR_APLL1_MUX_SETTING;
> + }
apll1_mux_setting() logs errors, do we need to add another log?
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-19 16:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19 10:18 [PATCH 1/4] ASoC: mediatek: mt8183: Fix wrong clock cleanup on clk_set_parent() failure phucduc.bui
2026-08-19 10:18 ` [PATCH 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling phucduc.bui
2026-08-19 16:05 ` Mark Brown
2026-08-19 10:18 ` [PATCH 3/4] ASoC: mediatek: mt8183: Use dev_err_probe() for " phucduc.bui
2026-08-19 10:18 ` [PATCH 4/4] ASoC: mediatek: mt8183: Drop redundant probe error messages phucduc.bui
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.