]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ENGR00219931 ESAI ASRC: fix channel swap bug while playback 6 channel
authorChen Liangjun <b36089@freescale.com>
Thu, 16 Aug 2012 09:14:37 +0000 (17:14 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:14 +0000 (08:35 +0200)
commit51047e24fc6594f5545dc5b6f1e4d03581c1f3bd
tree1c17bcf2e590be97ceb9aedf76ef1b87cc35e094
parentedf1811d9b8c51068cff5bc4ff1e88ccc1ad1436
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>
drivers/mxc/asrc/mxc_asrc.c
sound/soc/imx/imx-pcm-dma-mx2.c