Re: [PATCH v2 2/4] ASoC: mediatek: mt8183: Fix APLL enable error handling

Cezary Rojewski <[email protected]>
Newsgroups gmane.linux.sound,gmane.linux.ports.arm.kernel,gmane.linux.ports.arm.mediatek,gmane.linux.kernel
Message-ID <[email protected]>
On 8/21/2026 2:29 PM, [email protected] wrote:
> From: bui duc phuc <[email protected]>
> 
> 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.


I have mixed feelings about appl*_mux_setting().  Take a look at its 
disable-path: if clk_set_parent() fails the follow up 
clk_disable_unprepare() is skipped possibly leaving one of the clks 
hanging.  I'd expect error paths of callers (of said mux_setting() 
function) to ensure all the clks are disabled and unprepared 
unconditionally.

> Fixes: a94aec035a12 ("ASoC: mediatek: mt8183: add platform driver")
> Signed-off-by: bui duc phuc <[email protected]>
> ---
>   sound/soc/mediatek/mt8183/mt8183-afe-clk.c | 12 ++++++++++--
>   1 file changed, 10 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..0790d8123179 100644
> --- a/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
> +++ b/sound/soc/mediatek/mt8183/mt8183-afe-clk.c
> @@ -382,7 +382,9 @@ 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)
> +		goto ERR_APLL1_MUX_SETTING;

Why goto? The check is valid but the label in my opinion is unnecessary.

>   
>   	ret = clk_prepare_enable(afe_priv->clk[CLK_APLL22M]);
>   	if (ret) {
> @@ -411,6 +413,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:

While UPPER case for goto-labels is not part of the coding style I see 
why you did it - to be cohesive with the rest of the file.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.