ASoC: Set AIF word length for WM8904
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 18 Dec 2009 13:11:12 +0000 (13:11 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 18 Dec 2009 13:31:22 +0000 (13:31 +0000)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
sound/soc/codecs/wm8904.c

index 8310e5d14b83790e0c0b0b9c81a5ab7071daa8ed..e44ee31c2184ff6a52fe65ee27965346f05c20b6 100644 (file)
@@ -1503,6 +1503,23 @@ static int wm8904_hw_params(struct snd_pcm_substream *substream,
                wm8904->bclk = snd_soc_params_to_bclk(params);
        }
 
+       switch (params_format(params)) {
+       case SNDRV_PCM_FORMAT_S16_LE:
+               break;
+       case SNDRV_PCM_FORMAT_S20_3LE:
+               aif1 |= 0x40;
+               break;
+       case SNDRV_PCM_FORMAT_S24_LE:
+               aif1 |= 0x80;
+               break;
+       case SNDRV_PCM_FORMAT_S32_LE:
+               aif1 |= 0xc0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+
        dev_dbg(codec->dev, "Target BCLK is %dHz\n", wm8904->bclk);
 
        ret = wm8904_configure_clocking(codec);