lkml.org 
[lkml]   [2011]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/6] ASoC: AD1836: Fix setting the PCM format
    Date
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

    ---
    This patch doesn't need to go into stable since there are currently no users of
    PCM formats other than S32, which is the default.

    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    ---
    sound/soc/codecs/ad1836.c | 14 +++++++-------
    sound/soc/codecs/ad1836.h | 6 ++++++
    2 files changed, 13 insertions(+), 7 deletions(-)

    diff --git a/sound/soc/codecs/ad1836.c b/sound/soc/codecs/ad1836.c
    index ab63d52..754c496 100644
    --- a/sound/soc/codecs/ad1836.c
    +++ b/sound/soc/codecs/ad1836.c
    @@ -145,22 +145,22 @@ static int ad1836_hw_params(struct snd_pcm_substream *substream,
    /* bit size */
    switch (params_format(params)) {
    case SNDRV_PCM_FORMAT_S16_LE:
    - word_len = 3;
    + word_len = AD1836_WORD_LEN_16;
    break;
    case SNDRV_PCM_FORMAT_S20_3LE:
    - word_len = 1;
    + word_len = AD1836_WORD_LEN_20;
    break;
    case SNDRV_PCM_FORMAT_S24_LE:
    case SNDRV_PCM_FORMAT_S32_LE:
    - word_len = 0;
    + word_len = AD1836_WORD_LEN_24;
    break;
    }

    - snd_soc_update_bits(codec, AD1836_DAC_CTRL1,
    - AD1836_DAC_WORD_LEN_MASK, word_len);
    + snd_soc_update_bits(codec, AD1836_DAC_CTRL1, AD1836_DAC_WORD_LEN_MASK,
    + word_len << AD1836_DAC_WORD_LEN_OFFSET);

    - snd_soc_update_bits(codec, AD1836_ADC_CTRL2,
    - AD1836_ADC_WORD_LEN_MASK, word_len);
    + snd_soc_update_bits(codec, AD1836_ADC_CTRL2, AD1836_ADC_WORD_LEN_MASK,
    + word_len << AD1836_ADC_WORD_OFFSET);

    return 0;
    }
    diff --git a/sound/soc/codecs/ad1836.h b/sound/soc/codecs/ad1836.h
    index 8455967..9d6a3f8 100644
    --- a/sound/soc/codecs/ad1836.h
    +++ b/sound/soc/codecs/ad1836.h
    @@ -25,6 +25,7 @@
    #define AD1836_DAC_SERFMT_PCK256 (0x4 << 5)
    #define AD1836_DAC_SERFMT_PCK128 (0x5 << 5)
    #define AD1836_DAC_WORD_LEN_MASK 0x18
    +#define AD1836_DAC_WORD_LEN_OFFSET 3

    #define AD1836_DAC_CTRL2 1
    #define AD1836_DACL1_MUTE 0
    @@ -51,6 +52,7 @@
    #define AD1836_ADCL2_MUTE 2
    #define AD1836_ADCR2_MUTE 3
    #define AD1836_ADC_WORD_LEN_MASK 0x30
    +#define AD1836_ADC_WORD_OFFSET 5
    #define AD1836_ADC_SERFMT_MASK (7 << 6)
    #define AD1836_ADC_SERFMT_PCK256 (0x4 << 6)
    #define AD1836_ADC_SERFMT_PCK128 (0x5 << 6)
    @@ -60,4 +62,8 @@

    #define AD1836_NUM_REGS 16

    +#define AD1836_WORD_LEN_24 0x0
    +#define AD1836_WORD_LEN_20 0x1
    +#define AD1836_WORD_LEN_16 0x2
    +
    #endif
    --
    1.7.2.5


    \
     
     \ /
      Last update: 2011-06-06 13:41    [W:0.023 / U:29.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site