summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorChen Liangjun <b36089@freescale.com>2012-08-16 17:14:37 +0800
committerChen Liangjun <b36089@freescale.com>2012-08-16 18:20:08 +0800
commit72b2444cbe32f2b7bf7c99323a1dd5d3b34e9098 (patch)
tree1c17bcf2e590be97ceb9aedf76ef1b87cc35e094 /sound
parent4c22c9922e81904410d8f97065a267dee7b99380 (diff)
ENGR00219931 ESAI ASRC: fix channel swap bug while playback 6 channel
Channel swap caused by 2 reason: 1. To avoid ASRC underflow error, ASRC driver would prefill ASRC input FIFO with 160 samples. However, 160 can't be divided by 6. In this case, channel data miss alignment. In this patch, prefill ASRC input FIFO with 120, which can be divided by 2,4,6,8. 2. While start P2P playback, ESAI driver would first start SDMA, then ASRC, and last ESAI. While start ESAI, the data is not ready, thus ESAI underrun would happens and channel data miss alignment. In this patch, delay 1 ms between ASRC's start and ESAI's start. Signed-off-by: Chen Liangjun <b36089@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/imx/imx-pcm-dma-mx2.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c
index b36b28108049..ad8d5a3329c7 100644
--- a/sound/soc/imx/imx-pcm-dma-mx2.c
+++ b/sound/soc/imx/imx-pcm-dma-mx2.c
@@ -359,6 +359,7 @@ static int snd_imx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
dmaengine_submit(iprtd->asrc_p2p_desc);
dmaengine_submit(iprtd->asrc_desc);
asrc_start_conv(iprtd->asrc_index);
+ mdelay(1);
} else {
dmaengine_submit(iprtd->desc);
}