From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: phucduc.bui@gmail.com, Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
Cezary Rojewski <cezary.rojewski@intel.com>,
Cyril Chao <Cyril.Chao@mediatek.com>,
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
Dan Carpenter <error27@gmail.com>,
cassiogabrielcontato@gmail.com, linux-sound@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 02/13] ASoC: mediatek: mt8189: Propagate APLL enable errors
Date: Mon, 14 Sep 2026 15:22:21 +0200 [thread overview]
Message-ID: <07add31d-5622-40eb-9bcf-f7cb2396fee3@collabora.com> (raw)
In-Reply-To: <20260914072842.24420-3-phucduc.bui@gmail.com>
On 9/14/26 09:28, phucduc.bui@gmail.com wrote:
> From: bui duc phuc <phucduc.bui@gmail.com>
>
> mt8189_apll1_enable() and mt8189_apll2_enable() currently ignore
> errors from regmap_update_bits() and do not clean up resources when
> clock enable operations fail.
>
> Propagate these errors and roll back the clocks and tuner state on
> errors.
>
> Fixes: dc637ffeed6c ("ASoC: mediatek: mt8189: support audio clock control")
> Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
> ---
>
> Changes in v2:
> - Update the names of the goto labels.
>
> sound/soc/mediatek/mt8189/mt8189-afe-clk.c | 78 ++++++++++++++++------
> 1 file changed, 56 insertions(+), 22 deletions(-)
>
> diff --git a/sound/soc/mediatek/mt8189/mt8189-afe-clk.c b/sound/soc/mediatek/mt8189/mt8189-afe-clk.c
> index 63e03a40dbbe..aaf4f7921363 100644
> --- a/sound/soc/mediatek/mt8189/mt8189-afe-clk.c
> +++ b/sound/soc/mediatek/mt8189/mt8189-afe-clk.c
> @@ -454,30 +454,47 @@ int mt8189_apll1_enable(struct mtk_base_afe *afe)
>
> ret = mt8189_afe_enable_top_cg(afe, MT8189_CG_APLL1_CK);
> if (ret)
> - return ret;
> + goto err_clear_mux_setting;
>
> ret = mt8189_afe_enable_top_cg(afe, MT8189_PDN_APLL_TUNER1);
> if (ret)
> - return ret;
> + goto err_disable_apll1_ck;
>
> /* sel 44.1kHz:1, apll_div:7, upper bound:3 */
> - regmap_update_bits(afe->regmap, AFE_APLL1_TUNER_CFG,
> - XTAL_EN_128FS_SEL_MASK_SFT | APLL_DIV_MASK_SFT |
> - UPPER_BOUND_MASK_SFT,
> - (0x1 << XTAL_EN_128FS_SEL_SFT) | (7 << APLL_DIV_SFT) |
> - (3 << UPPER_BOUND_SFT));
> + ret = regmap_update_bits(afe->regmap, AFE_APLL1_TUNER_CFG,
> + XTAL_EN_128FS_SEL_MASK_SFT | APLL_DIV_MASK_SFT |
> + UPPER_BOUND_MASK_SFT,
> + (0x1 << XTAL_EN_128FS_SEL_SFT) | (7 << APLL_DIV_SFT) |
> + (3 << UPPER_BOUND_SFT));
> + if (ret)
> + goto err_disable_apll_tuner1;
>
> /* apll1 freq tuner enable */
> - regmap_update_bits(afe->regmap, AFE_APLL1_TUNER_CFG,
> - FREQ_TUNER_EN_MASK_SFT,
> - 0x1 << FREQ_TUNER_EN_SFT);
> + ret = regmap_update_bits(afe->regmap, AFE_APLL1_TUNER_CFG,
> + FREQ_TUNER_EN_MASK_SFT,
> + 0x1 << FREQ_TUNER_EN_SFT);
> + if (ret)
> + goto err_disable_apll_tuner1;
>
> /* audio apll1 on */
> ret = mt8189_afe_enable_top_cg(afe, MT8189_AUDIO_APLL1_EN_ON);
> if (ret)
> - return ret;
> + goto err_clear_freq_tuner_en;
>
> return 0;
> +
> +err_clear_freq_tuner_en:
> + regmap_update_bits(afe->regmap, AFE_APLL1_TUNER_CFG,
> + FREQ_TUNER_EN_MASK_SFT,
> + 0x0);
> +err_disable_apll_tuner1:
> + mt8189_afe_disable_top_cg(afe, MT8189_PDN_APLL_TUNER1);
> +err_disable_apll1_ck:
> + mt8189_afe_disable_top_cg(afe, MT8189_CG_APLL1_CK);
> +err_clear_mux_setting:
> + apll1_mux_setting(afe, false);
> +
> + return ret;
> }
>
> void mt8189_apll1_disable(struct mtk_base_afe *afe)
> @@ -506,30 +523,47 @@ int mt8189_apll2_enable(struct mtk_base_afe *afe)
>
> ret = mt8189_afe_enable_top_cg(afe, MT8189_CG_APLL2_CK);
> if (ret)
> - return ret;
> + goto err_clear_mux_setting;
>
> ret = mt8189_afe_enable_top_cg(afe, MT8189_PDN_APLL_TUNER2);
> if (ret)
> - return ret;
> + goto err_disable_apll2_ck;
>
> /* sel 48kHz: 2, apll_div: 7, upper bound: 3*/
> - regmap_update_bits(afe->regmap, AFE_APLL2_TUNER_CFG,
> - XTAL_EN_128FS_SEL_MASK_SFT | APLL_DIV_MASK_SFT |
> - UPPER_BOUND_MASK_SFT,
> - (0x2 << XTAL_EN_128FS_SEL_SFT) | (7 << APLL_DIV_SFT) |
> - (3 << UPPER_BOUND_SFT));
> + ret = regmap_update_bits(afe->regmap, AFE_APLL2_TUNER_CFG,
Well, this is a bit of defensive programming here.
The regmap pointer is already checked by the previous function call, and this is
a regmap over MMIO... and MMIO writes can't fail.
> + XTAL_EN_128FS_SEL_MASK_SFT | APLL_DIV_MASK_SFT |
> + UPPER_BOUND_MASK_SFT,
> + (0x2 << XTAL_EN_128FS_SEL_SFT) | (7 << APLL_DIV_SFT) |
> + (3 << UPPER_BOUND_SFT));
> + if (ret)
> + goto err_disable_apll_tuner2;
>
> /* apll2 freq tuner enable */
> - regmap_update_bits(afe->regmap, AFE_APLL2_TUNER_CFG,
> - FREQ_TUNER_EN_MASK_SFT,
> - 0x1 << FREQ_TUNER_EN_SFT);
> + ret = regmap_update_bits(afe->regmap, AFE_APLL2_TUNER_CFG,
> + FREQ_TUNER_EN_MASK_SFT,
> + 0x1 << FREQ_TUNER_EN_SFT);
> + if (ret)
> + goto err_disable_apll_tuner2;
Same here.
...and it's the same in some other commits of this series.
Though, good job about fixing the failure paths, that's good stuff.
Cheers,
Angelo
next prev parent reply other threads:[~2026-09-14 13:22 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-14 7:28 [PATCH v2 00/13] ASoC: mediatek: mt8189: Improve error handling phucduc.bui
2026-09-14 7:28 ` [PATCH v2 01/13] ASoC: mediatek: mt8189: Return error for missing regmap phucduc.bui
2026-09-14 13:26 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 02/13] ASoC: mediatek: mt8189: Propagate APLL enable errors phucduc.bui
2026-09-14 13:22 ` AngeloGioacchino Del Regno [this message]
2026-09-14 13:47 ` Mark Brown
2026-09-14 13:58 ` AngeloGioacchino Del Regno
2026-09-14 14:03 ` Mark Brown
2026-09-15 6:55 ` Bui Duc Phuc
2026-09-15 8:08 ` AngeloGioacchino Del Regno
2026-09-15 10:40 ` Bui Duc Phuc
2026-09-14 7:28 ` [PATCH v2 03/13] ASoC: mediatek: mt8189: Propagate MCK " phucduc.bui
2026-09-14 7:28 ` [PATCH v2 04/13] ASoC: mediatek: mt8189: Validate MCK ID phucduc.bui
2026-09-14 13:27 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 05/13] ASoC: mediatek: mt8189: Propagate reg_rw clock errors phucduc.bui
2026-09-14 7:28 ` [PATCH v2 06/13] ASoC: mediatek: mt8189: Use dev_err_probe() for " phucduc.bui
2026-09-14 13:26 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 07/13] ASoC: mediatek: mt8189: Propagate runtime resume errors phucduc.bui
2026-09-14 13:26 ` AngeloGioacchino Del Regno
2026-09-15 7:55 ` Bui Duc Phuc
2026-09-15 8:23 ` Bui Duc Phuc
2026-09-15 8:26 ` AngeloGioacchino Del Regno
2026-09-15 10:43 ` Bui Duc Phuc
2026-09-14 7:28 ` [PATCH v2 08/13] ASoC: mediatek: mt8189: Remove redundant error message phucduc.bui
2026-09-14 13:28 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 09/13] ASoC: mediatek: mt8189: Propagate APLL errors phucduc.bui
2026-09-14 7:28 ` [PATCH v2 10/13] ASoC: mediatek: mt8189: Propagate MCLK errors phucduc.bui
2026-09-14 13:28 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 11/13] ASoC: mediatek: mt8189: Validate sysclk frequency phucduc.bui
2026-09-14 13:28 ` AngeloGioacchino Del Regno
2026-09-14 7:28 ` [PATCH v2 12/13] ASoC: mediatek: mt8189: Propagate TDM clock errors phucduc.bui
2026-09-14 7:28 ` [PATCH v2 13/13] ASoC: mediatek: mt8189: Validate TDM MCLK frequency phucduc.bui
2026-09-14 13:29 ` AngeloGioacchino Del Regno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=07add31d-5622-40eb-9bcf-f7cb2396fee3@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=Cyril.Chao@mediatek.com \
--cc=broonie@kernel.org \
--cc=cassiogabrielcontato@gmail.com \
--cc=cezary.rojewski@intel.com \
--cc=error27@gmail.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-sound@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=perex@perex.cz \
--cc=phucduc.bui@gmail.com \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®