ASoC: mxs-saif: Fix channel swap for 24-bit format
authorFabio Estevam <fabio.estevam@freescale.com>
Thu, 1 Nov 2012 17:57:11 +0000 (15:57 -0200)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 2 Nov 2012 15:03:06 +0000 (15:03 +0000)
commitf55f14752ecaccf7d6a52fd13929b73fcb191f19
tree8b220c507ad69ff7b26eb0b95c3c1fa8f4b766b9
parent9f4c3f1cde541d477633479a0203ef8a834ee5f9
ASoC: mxs-saif: Fix channel swap for 24-bit format

Playing 24-bit format file leads to channel swap on mx28 and the reason is that
the current driver performs one write/read to/from the SAIF_DATA register to
trigger the transfer.

This approach works fine for S16_LE case because SAIF_DATA is a 32-bit register
and thus is capable of storing the 16-bit left and right channels, but for the
S24_LE case it can only store one channel, so in order to not lose the FIFO sync
an extra read/write is needed.

Reported-by: Dan Winner <DWinner@tc-helicon.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Tested-by: Dan Winner <DWinner@tc-helicon.com>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/mxs/mxs-saif.c