ASoC: arizona: Factor out FLL disable
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Wed, 20 Feb 2013 17:28:37 +0000 (17:28 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 4 Mar 2013 03:01:00 +0000 (11:01 +0800)
In preparation for additional features on the FLL this patch factors out
the code for disabling an FLL into a seperate function.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/arizona.c

index 4640bcc..a8821a8 100644 (file)
@@ -1090,6 +1090,20 @@ static bool arizona_is_enabled_fll(struct arizona_fll *fll)
        return reg & ARIZONA_FLL1_ENA;
 }
 
+static void arizona_disable_fll(struct arizona_fll *fll)
+{
+       struct arizona *arizona = fll->arizona;
+       bool change;
+
+       regmap_update_bits_check(arizona->regmap, fll->base + 1,
+                                ARIZONA_FLL1_ENA, 0, &change);
+       regmap_update_bits(arizona->regmap, fll->base + 0x11,
+                          ARIZONA_FLL1_SYNC_ENA, 0);
+
+       if (change)
+               pm_runtime_put_autosuspend(arizona->dev);
+}
+
 int arizona_set_fll(struct arizona_fll *fll, int source,
                    unsigned int Fref, unsigned int Fout)
 {
@@ -1156,13 +1170,7 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
                if (ret == 0)
                        arizona_fll_warn(fll, "Timed out waiting for lock\n");
        } else {
-               regmap_update_bits(arizona->regmap, fll->base + 1,
-                                  ARIZONA_FLL1_ENA, 0);
-               regmap_update_bits(arizona->regmap, fll->base + 0x11,
-                                  ARIZONA_FLL1_SYNC_ENA, 0);
-
-               if (ena)
-                       pm_runtime_put_autosuspend(arizona->dev);
+               arizona_disable_fll(fll);
        }
 
        fll->fref = Fref;