Skip to content

Commit 8f0f016

Browse files
TE-N-ShengjiuWangbroonie
authored andcommitted
ASoC: fsl_sai: Fix channel swap issue on i.MX8MP
When flag mclk_with_tere and mclk_direction_output enabled, The SAI transmitter or receiver will be enabled in very early stage, that if FSL_SAI_xMR is set by previous case, for example previous case is one channel, current case is two channels, then current case started with wrong xMR in the beginning, then channel swap happen. The patch is to clear xMR in hw_free() to avoid such channel swap issue. Fixes: 3e4a826 ("ASoC: fsl_sai: MCLK bind with TX/RX enable bit") Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> Link: https://msgid.link/r/1702953057-4499-1-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 025222a commit 8f0f016

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

sound/soc/fsl/fsl_sai.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,9 @@ static int fsl_sai_hw_free(struct snd_pcm_substream *substream,
714714
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
715715
unsigned int ofs = sai->soc_data->reg_offset;
716716

717+
/* Clear xMR to avoid channel swap with mclk_with_tere enabled case */
718+
regmap_write(sai->regmap, FSL_SAI_xMR(tx), 0);
719+
717720
regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx, ofs),
718721
FSL_SAI_CR3_TRCE_MASK, 0);
719722

0 commit comments

Comments
 (0)