summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-10-24 10:56:30 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-10-24 10:58:01 +0100
commit6730049a4763e868d66caea622e8aef6b8afdb57 (patch)
treecd1b60631e4d533677cb1a9da1307c893a633c9b
parent0ffecd7d869a156b710b7b6cb59153748c6de3ae (diff)
downloadop-kernel-dev-6730049a4763e868d66caea622e8aef6b8afdb57.zip
op-kernel-dev-6730049a4763e868d66caea622e8aef6b8afdb57.tar.gz
ASoC: wm8994: Lower AIFnCLK divisor when dropping to 32kHz
When lowering SYSCLK to 50kHz for accessory detection also lower the AIFnCLK divisor to normalise the clocking configuration within the device. This will not disrupt audio as we cannot support active audio with such a low SYSCLK. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/codecs/wm8994.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 4d0ae9d..1d1b43f 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2346,6 +2346,18 @@ static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai,
configure_clock(codec);
+ /*
+ * If SYSCLK will be less than 50kHz adjust AIFnCLK dividers
+ * for detection.
+ */
+ if (max(wm8994->aifclk[0], wm8994->aifclk[1]) < 50000) {
+ dev_dbg(codec->dev, "Configuring AIFs for 128fs\n");
+ snd_soc_update_bits(codec, WM8994_AIF1_RATE,
+ WM8994_AIF1CLK_RATE_MASK, 0x1);
+ snd_soc_update_bits(codec, WM8994_AIF2_RATE,
+ WM8994_AIF2CLK_RATE_MASK, 0x1);
+ }
+
return 0;
}
OpenPOWER on IntegriCloud