ASoC: Suppress noop SYSCLK updates in WM8915
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 3 Jun 2011 16:09:49 +0000 (17:09 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 6 Jun 2011 11:47:17 +0000 (12:47 +0100)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
sound/soc/codecs/wm8915.c

index b654fcd14897b123440a83a144a3bd99878024f9..eecd2c116122612162eb1db355cee07d853999db 100644 (file)
@@ -55,6 +55,7 @@ struct wm8915_priv {
        int ldo1ena;
 
        int sysclk;
+       int sysclk_src;
 
        int fll_src;
        int fll_fref;
@@ -1834,6 +1835,9 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai,
        int src;
        int old;
 
+       if (freq == wm8915->sysclk && clk_id == wm8915->sysclk_src)
+               return 0;
+
        /* Disable SYSCLK while we reconfigure */
        old = snd_soc_read(codec, WM8915_AIF_CLOCKING_1) & WM8915_SYSCLK_ENA;
        snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1,
@@ -1885,6 +1889,8 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai,
        snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1,
                            WM8915_SYSCLK_ENA, old);
 
+       wm8915->sysclk_src = clk_id;
+
        return 0;
 }