ASoC: wm8961 - clear WM8961_MCLKDIV bit for freq <= 16500000
authorAxel Lin <axel.lin@gmail.com>
Wed, 24 Nov 2010 02:21:54 +0000 (10:21 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 24 Nov 2010 11:22:44 +0000 (11:22 +0000)
MCLKDIV bit of Register 04h Clocking1:
0 : Divide by 1
1 : Divide by 2

Thus in the case of freq <= 16500000, we should clear MCLKDIV bit.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
sound/soc/codecs/wm8961.c

index 93fecf5f94c6fb0844e6860550a4f23710976093..8340485c985145a2ad1614bedaf39f2377276d88 100644 (file)
@@ -736,7 +736,7 @@ static int wm8961_set_sysclk(struct snd_soc_dai *dai, int clk_id,
                freq /= 2;
        } else {
                dev_dbg(codec->dev, "Using MCLK/1 for %dHz MCLK\n", freq);
-               reg &= WM8961_MCLKDIV;
+               reg &= ~WM8961_MCLKDIV;
        }
 
        snd_soc_write(codec, WM8961_CLOCKING1, reg);