Unverified Commit 78b3bcfd authored by Shengjiu Wang's avatar Shengjiu Wang Committed by Mark Brown
Browse files

ASoC: fsl_sai: allow to set mclk rate with zero clk_id



If clk_id is zero, it means FSL_SAI_CLK_BUS in fsl_sai_set_dai_sysclk(),
as the clk[FSL_SAI_CLK_BUS]'s rate can't be changed, there is no rate
changed for mclk.

But with audio-graph-card, the clk_id is always zero, in order to allow
to set mclk rate with zero clk_id, update the condition to be if clk_id is
zero, then set the FSL_SAI_CLK_MAST1's rate. This would not change the
original function for master mode.

Signed-off-by: default avatarShengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20250328085744.1893434-2-shengjiu.wang@nxp.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0af2f6be
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -238,7 +238,6 @@ static int fsl_sai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
	if (dir == SND_SOC_CLOCK_IN)
		return 0;

	if (freq > 0 && clk_id != FSL_SAI_CLK_BUS) {
	if (clk_id < 0 || clk_id >= FSL_SAI_MCLK_MAX) {
		dev_err(cpu_dai->dev, "Unknown clock id: %d\n", clk_id);
		return -EINVAL;
@@ -249,12 +248,13 @@ static int fsl_sai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
		return -EINVAL;
	}

		if (sai->mclk_streams == 0) {
			ret = fsl_sai_set_mclk_rate(cpu_dai, clk_id, freq);
	if (sai->mclk_streams == 0 && freq > 0) {
		ret = fsl_sai_set_mclk_rate(cpu_dai,
					    clk_id ? clk_id : FSL_SAI_CLK_MAST1,
					    freq);
		if (ret < 0)
			return ret;
	}
	}

	ret = fsl_sai_set_dai_sysclk_tr(cpu_dai, clk_id, freq, true);
	if (ret) {