Commit 2df3e8e0679694d0e653b2ac2b6b4dfd5094b072

Authored by Lars-Peter Clausen
Committed by Greg Kroah-Hartman
1 parent 2b19835bf2

ASoC: AD1836: Fix setting the PCM format

commit 8ca695f273709a9d147826716a8dee3e0eb2407f upstream.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Showing 2 changed files with 13 additions and 7 deletions Side-by-side Diff

sound/soc/codecs/ad1836.c
... ... @@ -145,22 +145,22 @@
145 145 /* bit size */
146 146 switch (params_format(params)) {
147 147 case SNDRV_PCM_FORMAT_S16_LE:
148   - word_len = 3;
  148 + word_len = AD1836_WORD_LEN_16;
149 149 break;
150 150 case SNDRV_PCM_FORMAT_S20_3LE:
151   - word_len = 1;
  151 + word_len = AD1836_WORD_LEN_20;
152 152 break;
153 153 case SNDRV_PCM_FORMAT_S24_LE:
154 154 case SNDRV_PCM_FORMAT_S32_LE:
155   - word_len = 0;
  155 + word_len = AD1836_WORD_LEN_24;
156 156 break;
157 157 }
158 158  
159   - snd_soc_update_bits(codec, AD1836_DAC_CTRL1,
160   - AD1836_DAC_WORD_LEN_MASK, word_len);
  159 + snd_soc_update_bits(codec, AD1836_DAC_CTRL1, AD1836_DAC_WORD_LEN_MASK,
  160 + word_len << AD1836_DAC_WORD_LEN_OFFSET);
161 161  
162   - snd_soc_update_bits(codec, AD1836_ADC_CTRL2,
163   - AD1836_ADC_WORD_LEN_MASK, word_len);
  162 + snd_soc_update_bits(codec, AD1836_ADC_CTRL2, AD1836_ADC_WORD_LEN_MASK,
  163 + word_len << AD1836_ADC_WORD_OFFSET);
164 164  
165 165 return 0;
166 166 }
sound/soc/codecs/ad1836.h
... ... @@ -25,6 +25,7 @@
25 25 #define AD1836_DAC_SERFMT_PCK256 (0x4 << 5)
26 26 #define AD1836_DAC_SERFMT_PCK128 (0x5 << 5)
27 27 #define AD1836_DAC_WORD_LEN_MASK 0x18
  28 +#define AD1836_DAC_WORD_LEN_OFFSET 3
28 29  
29 30 #define AD1836_DAC_CTRL2 1
30 31 #define AD1836_DACL1_MUTE 0
... ... @@ -51,6 +52,7 @@
51 52 #define AD1836_ADCL2_MUTE 2
52 53 #define AD1836_ADCR2_MUTE 3
53 54 #define AD1836_ADC_WORD_LEN_MASK 0x30
  55 +#define AD1836_ADC_WORD_OFFSET 5
54 56 #define AD1836_ADC_SERFMT_MASK (7 << 6)
55 57 #define AD1836_ADC_SERFMT_PCK256 (0x4 << 6)
56 58 #define AD1836_ADC_SERFMT_PCK128 (0x5 << 6)
... ... @@ -59,6 +61,10 @@
59 61 #define AD1836_ADC_CTRL3 14
60 62  
61 63 #define AD1836_NUM_REGS 16
  64 +
  65 +#define AD1836_WORD_LEN_24 0x0
  66 +#define AD1836_WORD_LEN_20 0x1
  67 +#define AD1836_WORD_LEN_16 0x2
62 68  
63 69 #endif