diff options
| author | Mark Brown <broonie@kernel.org> | 2026-07-16 13:18:21 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-07-16 13:18:21 +0100 |
| commit | 7619cfb830ad9a6e34121b34838ab0992ce514a8 (patch) | |
| tree | 063b658ff7b75280f25645a60e63f2d1d3ec96a5 /sound | |
| parent | 73080a7976edde1c61f3654308ffe77c428ad6a2 (diff) | |
| parent | 4fddda16f939b6ee53c6946ad71a2ea1fabf43c5 (diff) | |
| download | linux-next-7619cfb830ad9a6e34121b34838ab0992ce514a8.tar.gz linux-next-7619cfb830ad9a6e34121b34838ab0992ce514a8.zip | |
ASoC: codecs: lpass-{wsa,va}-macro: check clk_set_rate() return value
Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com> says:
clk_set_rate() returns 0 on success or a negative errno on failure but
the WSA and VA macro probe functions are ignoring it. This series adds
return value checking and bails out of probe on failure.
This mirrors the same fix already posted for the TX and RX macros [1].
[1] https://lore.kernel.org/all/20260707-xo-sd-codec-tx-rx-v2-3-f61b4622f97f@oss.qualcomm.com/
Link: https://patch.msgid.link/20260715-xo-sd-codec-wsa-va-clk-set-rate-v2-0-16ca64c2b929@oss.qualcomm.com
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/soc/codecs/lpass-va-macro.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/lpass-wsa-macro.c | 9 |
2 files changed, 13 insertions, 4 deletions
diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c index 946051698420..dbc5795b9273 100644 --- a/sound/soc/codecs/lpass-va-macro.c +++ b/sound/soc/codecs/lpass-va-macro.c @@ -1605,7 +1605,9 @@ static int va_macro_probe(struct platform_device *pdev) va->has_npl_clk = data->has_npl_clk; /* mclk rate */ - clk_set_rate(va->mclk, 2 * VA_MACRO_MCLK_FREQ); + ret = clk_set_rate(va->mclk, 2 * VA_MACRO_MCLK_FREQ); + if (ret) + goto err; if (va->has_npl_clk) { va->npl = devm_clk_get(dev, "npl"); @@ -1614,7 +1616,9 @@ static int va_macro_probe(struct platform_device *pdev) goto err; } - clk_set_rate(va->npl, 2 * VA_MACRO_MCLK_FREQ); + ret = clk_set_rate(va->npl, 2 * VA_MACRO_MCLK_FREQ); + if (ret) + goto err; } ret = devm_pm_clk_create(dev); diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c index f511816aa4a0..fc9e0a37c042 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2773,8 +2773,13 @@ static int wsa_macro_probe(struct platform_device *pdev) wsa->dev = dev; /* set MCLK and NPL rates */ - clk_set_rate(wsa->mclk, WSA_MACRO_MCLK_FREQ); - clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); + ret = clk_set_rate(wsa->mclk, WSA_MACRO_MCLK_FREQ); + if (ret) + return ret; + + ret = clk_set_rate(wsa->npl, WSA_MACRO_MCLK_FREQ); + if (ret) + return ret; ret = devm_pm_clk_create(dev); if (ret) |
