From a5f5b5110f98cce1a28748d668d9b8793bdbd41b Mon Sep 17 00:00:00 2001 From: Charles Keepax Date: Wed, 20 Feb 2013 17:28:37 +0000 Subject: [PATCH] --- yaml --- r: 371775 b: refs/heads/master c: 7604054e13897c2da3570e33a67ecb76462212d8 h: refs/heads/master i: 371773: cda430acdef3b0ea6c10ed823eb3c0ac38918d57 371771: 4e30af8cc981908fbb10528b15a7b40abe33a143 371767: 1a922e989f66582a065664eeeadbe60b5bce729e 371759: 7f1a8a9ebc09828a7fbba611e186192faef9c88e 371743: 21248c708774a923d9a0e1634a000a770ea22cc1 371711: b6d643fb3cbf88f2a24ea5ff0dec012c7c6939a6 v: v3 --- [refs] | 2 +- trunk/sound/soc/codecs/arizona.c | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index cd4f8ebdedca..f8587ae5d8dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d122d6c974e35c940a638c26aa70bea363141d27 +refs/heads/master: 7604054e13897c2da3570e33a67ecb76462212d8 diff --git a/trunk/sound/soc/codecs/arizona.c b/trunk/sound/soc/codecs/arizona.c index 4640bccbfba2..a8821a819adc 100644 --- a/trunk/sound/soc/codecs/arizona.c +++ b/trunk/sound/soc/codecs/arizona.c @@ -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;