]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: fsl_sai: Constrain sample rates from audio PLLs only in master mode
authorChancel Liu <chancel.liu@nxp.com>
Wed, 10 Dec 2025 06:21:09 +0000 (15:21 +0900)
committerMark Brown <broonie@kernel.org>
Sun, 14 Dec 2025 10:32:40 +0000 (19:32 +0900)
If SAI works in master mode it will generate clocks for external codec
from audio PLLs. Thus sample rates should be constrained according to
audio PLL clocks. While SAI works in slave mode which means clocks are
generated externally then constraints are independent of audio PLLs.

Fixes: 4edc98598be4 ("ASoC: fsl_sai: Add sample rate constraint")
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
Link: https://patch.msgid.link/20251210062109.2577735-1-chancel.liu@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_sai.c

index 72bfc91e21b9b4c9f410d382e6e9ab4effb5013a..86730c2149146e5f906cf50caf84bfe21b1e1b18 100644 (file)
@@ -917,8 +917,14 @@ static int fsl_sai_startup(struct snd_pcm_substream *substream,
                                           tx ? sai->dma_params_tx.maxburst :
                                           sai->dma_params_rx.maxburst);
 
-       ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
-                                        SNDRV_PCM_HW_PARAM_RATE, &sai->constraint_rates);
+       if (sai->is_consumer_mode[tx])
+               ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
+                                                SNDRV_PCM_HW_PARAM_RATE,
+                                                &fsl_sai_rate_constraints);
+       else
+               ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
+                                                SNDRV_PCM_HW_PARAM_RATE,
+                                                &sai->constraint_rates);
 
        return ret;
 }