Browse Source

ASoC: arizona: Suppress noop FLL updates

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Mark Brown 12 years ago
parent
commit
1cbe4bcae3
2 changed files with 8 additions and 0 deletions
  1. 6 0
      sound/soc/codecs/arizona.c
  2. 2 0
      sound/soc/codecs/arizona.h

+ 6 - 0
sound/soc/codecs/arizona.c

@@ -937,6 +937,9 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
 	bool ena;
 	int ret;
 
+	if (fll->fref == Fref && fll->fout == Fout)
+		return 0;
+
 	ret = regmap_read(arizona->regmap, fll->base + 1, &reg);
 	if (ret != 0) {
 		arizona_fll_err(fll, "Failed to read current state: %d\n",
@@ -1014,6 +1017,9 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
 	if (ret == 0)
 		arizona_fll_warn(fll, "Timed out waiting for lock\n");
 
+	fll->fref = Fref;
+	fll->fout = Fout;
+
 	return 0;
 }
 EXPORT_SYMBOL_GPL(arizona_set_fll);

+ 2 - 0
sound/soc/codecs/arizona.h

@@ -191,6 +191,8 @@ struct arizona_fll {
 	unsigned int vco_mult;
 	struct completion lock;
 	struct completion ok;
+	unsigned int fref;
+	unsigned int fout;
 
 	char lock_name[ARIZONA_FLL_NAME_LEN];
 	char clock_ok_name[ARIZONA_FLL_NAME_LEN];