diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/801-audio-0026-MLK-14935-ASoC-fsl_sai-Fix-mixing-initialization-dat.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/801-audio-0026-MLK-14935-ASoC-fsl_sai-Fix-mixing-initialization-dat.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/801-audio-0026-MLK-14935-ASoC-fsl_sai-Fix-mixing-initialization-dat.patch b/target/linux/layerscape/patches-5.4/801-audio-0026-MLK-14935-ASoC-fsl_sai-Fix-mixing-initialization-dat.patch new file mode 100644 index 0000000000..a68985fa02 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/801-audio-0026-MLK-14935-ASoC-fsl_sai-Fix-mixing-initialization-dat.patch @@ -0,0 +1,36 @@ +From 96412158397ca0e41db1eb7cec4f51a2280d1bf1 Mon Sep 17 00:00:00 2001 +From: Mihai Serban <mihai.serban@nxp.com> +Date: Thu, 27 Apr 2017 18:47:42 +0300 +Subject: [PATCH] MLK-14935: ASoC: fsl_sai: Fix mixing initialization data with + actual audio samples + +When starting a playback the initialization data used to reduce underruns +was send to the transmit data register after the DMA requests were enabled. +This patch moves the initialization phase before enabling the DMA so the +data is transmitted in correct order. + +Signed-off-by: Mihai Serban <mihai.serban@nxp.com> +--- + sound/soc/fsl/fsl_sai.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/sound/soc/fsl/fsl_sai.c ++++ b/sound/soc/fsl/fsl_sai.c +@@ -594,15 +594,14 @@ static int fsl_sai_trigger(struct snd_pc + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: +- regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), +- FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE); +- + for (i = 0; tx && i < channels; i++) + regmap_write(sai->regmap, FSL_SAI_TDR0, 0x0); + if (tx) + udelay(10); + + regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), ++ FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE); ++ regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), + FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); + regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), + FSL_SAI_CSR_SE, FSL_SAI_CSR_SE); |