]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: stm32: sai: add a check on minimal kernel frequency
authorOlivier Moysan <olivier.moysan@foss.st.com>
Wed, 30 Apr 2025 16:52:09 +0000 (18:52 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 30 Apr 2025 23:06:43 +0000 (08:06 +0900)
On MP2 SoCs SAI kernel clock rate is managed through
stm32_sai_set_parent_rate() function.
If the kernel clock rate was set previously to a low frequency, this
frequency may be too low to support the newly requested audio stream rate.
However the stm32_sai_rate_accurate() will only check accuracy against
the maximum kernel clock rate. The function will return leaving the kernel
clock rate unchanged.
Add a check on minimal frequency requirement, to avoid this.

Fixes: 2cfe1ff22555 ("ASoC: stm32: sai: add stm32mp25 support")
Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
Link: https://patch.msgid.link/20250430165210.321273-3-olivier.moysan@foss.st.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/stm/stm32_sai_sub.c

index 4d018b4bc3f0fa8eff8552580a68239628da6687..bf5299ba11c3c95ad89dfb00612ade7ed42b9d0d 100644 (file)
@@ -447,7 +447,10 @@ static int stm32_sai_set_parent_rate(struct stm32_sai_sub_data *sai,
         * return immediately.
         */
        sai_curr_rate = clk_get_rate(sai->sai_ck);
-       if (stm32_sai_rate_accurate(sai_ck_max_rate, sai_curr_rate))
+       dev_dbg(&pdev->dev, "kernel clock rate: min [%u], max [%u], current [%u]",
+               sai_ck_min_rate, sai_ck_max_rate, sai_curr_rate);
+       if (stm32_sai_rate_accurate(sai_ck_max_rate, sai_curr_rate) &&
+           sai_curr_rate >= sai_ck_min_rate)
                return 0;
 
        /*