lkml.org 
[lkml]   [2014]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16 218/357] ASoC: davinci-mcasp: Correct rx format unit configuration
    Date
    3.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Peter Ujfalusi <peter.ujfalusi@ti.com>

    commit fe0a29e163a5d045c73faab682a8dac71c2f8012 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>

    ---
    sound/soc/davinci/davinci-mcasp.c | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    --- a/sound/soc/davinci/davinci-mcasp.c
    +++ b/sound/soc/davinci/davinci-mcasp.c
    @@ -455,8 +455,17 @@ static int davinci_config_channel_size(s
    {
    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()



    \
     
     \ /
      Last update: 2014-10-04 03:01    [W:4.159 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site