mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 10:12:16 +09:00
ASoC: davinci-mcasp: Correct rx format unit configuration
commit fe0a29e163 upstream.
In case of capture we should not use rotation. The reverse and mask is
enough to get the data align correctly from the bus to MCU:
Format data from bus after reverse (XRBUF)
S16_LE: |LSB|MSB|xxx|xxx| |xxx|xxx|MSB|LSB|
S24_3LE: |LSB|DAT|MSB|xxx| |xxx|MSB|DAT|LSB|
S24_LE: |LSB|DAT|MSB|xxx| |xxx|MSB|DAT|LSB|
S32_LE: |LSB|DAT|DAT|MSB| |MSB|DAT|DAT|LSB|
With this patch all supported formats will work for playback and capture.
Reported-by: Jyri Sarha <jsarha@ti.com> (broken S24_3LE capture)
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
474740b9e6
commit
8e485734eb
@@ -632,8 +632,17 @@ static int davinci_config_channel_size(struct davinci_audio_dev *dev,
|
||||
{
|
||||
u32 fmt;
|
||||
u32 tx_rotate = (word_length / 4) & 0x7;
|
||||
u32 rx_rotate = (32 - word_length) / 4;
|
||||
u32 mask = (1ULL << word_length) - 1;
|
||||
/*
|
||||
* For captured data we should not rotate, inversion and masking is
|
||||
* enoguh to get the data to the right position:
|
||||
* Format data from bus after reverse (XRBUF)
|
||||
* S16_LE: |LSB|MSB|xxx|xxx| |xxx|xxx|MSB|LSB|
|
||||
* S24_3LE: |LSB|DAT|MSB|xxx| |xxx|MSB|DAT|LSB|
|
||||
* S24_LE: |LSB|DAT|MSB|xxx| |xxx|MSB|DAT|LSB|
|
||||
* S32_LE: |LSB|DAT|DAT|MSB| |MSB|DAT|DAT|LSB|
|
||||
*/
|
||||
u32 rx_rotate = 0;
|
||||
|
||||
/*
|
||||
* if s BCLK-to-LRCLK ratio has been configured via the set_clkdiv()
|
||||
|
||||
Reference in New Issue
Block a user