On Tue, Nov 8, 2022 at 5:52 AM Marek Vasut marex@denx.de wrote:
For SAI to generate MCLK on external SoC pad, the transmitter must be enabled as well. With transmitter disabled, no clock are generated. Enable the transmitter using the TERE bit.
It is already done in trigger(), why need to do this operation in probe() and set_bclk() again?
best regards wang shengjiu
Signed-off-by: Marek Vasut marex@denx.de
Cc: Fabio Estevam festevam@gmail.com Cc: Jaroslav Kysela perex@perex.cz Cc: Liam Girdwood lgirdwood@gmail.com Cc: Mark Brown broonie@kernel.org Cc: Nicolin Chen nicoleotsuka@gmail.com Cc: Shengjiu Wang shengjiu.wang@gmail.com Cc: Takashi Iwai tiwai@suse.com Cc: Xiubo Li Xiubo.Lee@gmail.com To: alsa-devel@alsa-project.org
sound/soc/fsl/fsl_sai.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index 1c9be8a5dcb13..98c62027e5799 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -503,6 +503,10 @@ static int fsl_sai_set_bclk(struct snd_soc_dai *dai, bool tx, u32 freq) /* SAI is in master mode at this point, so enable MCLK */ regmap_update_bits(sai->regmap, FSL_SAI_MCTL, FSL_SAI_MCTL_MCLK_EN, FSL_SAI_MCTL_MCLK_EN);
/* Transmitter must be enabled to generate MCLK on pad */
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(1, ofs),
FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); } return 0;
@@ -1445,6 +1449,11 @@ static int fsl_sai_probe(struct platform_device *pdev) sai->soc_data->max_register >= FSL_SAI_MCTL) { regmap_update_bits(sai->regmap, FSL_SAI_MCTL, FSL_SAI_MCTL_MCLK_EN, FSL_SAI_MCTL_MCLK_EN);
/* Transmitter must be enabled to generate MCLK on pad */
regmap_update_bits(sai->regmap,
FSL_SAI_xCSR(1,
sai->soc_data->reg_offset),
FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); } ret = pm_runtime_put_sync(dev);
-- 2.35.1