aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/arizona.c
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>2013-02-20 12:28:37 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-03-03 22:01:00 -0500
commit7604054e13897c2da3570e33a67ecb76462212d8 (patch)
tree2e4e1321d1cac02d6c22fdf16deaddba81b7f8e3 /sound/soc/codecs/arizona.c
parentd122d6c974e35c940a638c26aa70bea363141d27 (diff)
ASoC: arizona: Factor out FLL disable
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>
Diffstat (limited to 'sound/soc/codecs/arizona.c')
-rw-r--r--sound/soc/codecs/arizona.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
index 4640bccbfba2..a8821a819adc 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
@@ -1090,6 +1090,20 @@ static bool arizona_is_enabled_fll(struct arizona_fll *fll)
1090 return reg & ARIZONA_FLL1_ENA; 1090 return reg & ARIZONA_FLL1_ENA;
1091} 1091}
1092 1092
1093static void arizona_disable_fll(struct arizona_fll *fll)
1094{
1095 struct arizona *arizona = fll->arizona;
1096 bool change;
1097
1098 regmap_update_bits_check(arizona->regmap, fll->base + 1,
1099 ARIZONA_FLL1_ENA, 0, &change);
1100 regmap_update_bits(arizona->regmap, fll->base + 0x11,
1101 ARIZONA_FLL1_SYNC_ENA, 0);
1102
1103 if (change)
1104 pm_runtime_put_autosuspend(arizona->dev);
1105}
1106
1093int arizona_set_fll(struct arizona_fll *fll, int source, 1107int arizona_set_fll(struct arizona_fll *fll, int source,
1094 unsigned int Fref, unsigned int Fout) 1108 unsigned int Fref, unsigned int Fout)
1095{ 1109{
@@ -1156,13 +1170,7 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
1156 if (ret == 0) 1170 if (ret == 0)
1157 arizona_fll_warn(fll, "Timed out waiting for lock\n"); 1171 arizona_fll_warn(fll, "Timed out waiting for lock\n");
1158 } else { 1172 } else {
1159 regmap_update_bits(arizona->regmap, fll->base + 1, 1173 arizona_disable_fll(fll);
1160 ARIZONA_FLL1_ENA, 0);
1161 regmap_update_bits(arizona->regmap, fll->base + 0x11,
1162 ARIZONA_FLL1_SYNC_ENA, 0);
1163
1164 if (ena)
1165 pm_runtime_put_autosuspend(arizona->dev);
1166 } 1174 }
1167 1175
1168 fll->fref = Fref; 1176 fll->fref = Fref;