On Tue, Nov 8, 2022 at 5:52 AM Marek Vasut <marex@xxxxxxx> 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@xxxxxxx> > --- > Cc: Fabio Estevam <festevam@xxxxxxxxx> > Cc: Jaroslav Kysela <perex@xxxxxxxx> > Cc: Liam Girdwood <lgirdwood@xxxxxxxxx> > Cc: Mark Brown <broonie@xxxxxxxxxx> > Cc: Nicolin Chen <nicoleotsuka@xxxxxxxxx> > Cc: Shengjiu Wang <shengjiu.wang@xxxxxxxxx> > Cc: Takashi Iwai <tiwai@xxxxxxxx> > Cc: Xiubo Li <Xiubo.Lee@xxxxxxxxx> > To: alsa-devel@xxxxxxxxxxxxxxxx > --- > 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 > >