ASoC: arizona: Don't enable FLL on REFCLK configuration
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Fri, 22 Feb 2013 17:10:37 +0000 (17:10 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 4 Mar 2013 03:01:01 +0000 (11:01 +0800)
Enabling the FLL when REFCLK is being configured is not what the user
would expect and can cause issues if SYNCCLK has no specified frequency.

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

index debd184cc706680727abaf794d7ab4a4c102ccdb..e456cb4b196e35ee0951b95297eeb3dc51181609 100644 (file)
@@ -1183,17 +1183,17 @@ int arizona_set_fll_refclk(struct arizona_fll *fll, int source,
        if (source < 0)
                return -EINVAL;
 
-       if (fll->ref_src == source && fll->ref_freq == Fref &&
-           fll->fout == Fout)
+       if (fll->ref_src == source && fll->ref_freq == Fref)
                return 0;
 
-       if (Fout) {
-               ret = arizona_calc_fll(fll, &ref, Fref, Fout);
+       if (fll->fout) {
+               ret = arizona_calc_fll(fll, &ref, Fref, fll->fout);
                if (ret != 0)
                        return ret;
 
                if (fll->sync_src >= 0) {
-                       ret = arizona_calc_fll(fll, &sync, fll->sync_freq, Fout);
+                       ret = arizona_calc_fll(fll, &sync, fll->sync_freq,
+                                              fll->fout);
                        if (ret != 0)
                                return ret;
                }
@@ -1201,12 +1201,9 @@ int arizona_set_fll_refclk(struct arizona_fll *fll, int source,
 
        fll->ref_src = source;
        fll->ref_freq = Fref;
-       fll->fout = Fout;
 
-       if (Fout) {
+       if (fll->fout) {
                arizona_enable_fll(fll, &ref, &sync);
-       } else {
-               arizona_disable_fll(fll);
        }
 
        return 0;