ASoC: McASP: Fix data rotation for playback. Enables 24bit audio playback
authorMichal Bachraty <michal.bachraty@streamunlimited.com>
Fri, 18 Jan 2013 09:17:00 +0000 (10:17 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 27 Jan 2013 06:14:46 +0000 (14:14 +0800)
commitdde109fb46256f61642ba9bf0199418dfaaca12b
tree04a0070b28b0a817752aa67e31ec7eb3112335a3
parent949db153b6466c6f7cad5a427ecea94985927311
ASoC: McASP: Fix data rotation for playback. Enables 24bit audio playback

u32 rotate = (32 - word_length) / 4;
This implementation is wrong, but it works only for 16, or 32 bit audio data.
(rotation for 16 or 32 bit is same as in code I present) Mcasp rotated data in
4 bits (max value 0x7)and then masks them . That data are sended to i2s bus.
For 24 bit or 20 bit or other data formats, this code rotates data badly and
you hear somethink like noise.  You need to use
u32 rotate = (word_length / 4) & 0x7;
to proper data rotation.

Signed-off-by: Michal Bachraty <michal.bachraty@streamunlimited.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/davinci/davinci-mcasp.c