diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-21 14:16:14 +0100 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-26 11:48:26 +0100 |
commit | c5f336cc003dfa071aaa7a01ed1c16232b227aa4 (patch) | |
tree | 11f4d0e24a4d98f713156ea77a1b44e1b187308f | |
parent | f9f4b1c71db9a0d74e0237c11a84f4e96e4ed146 (diff) |
ASoC: Support 24.576MHz MCLKs in WM8915
We can safely divide these down to within the supported SYSCLK range.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
-rw-r--r-- | sound/soc/codecs/wm8915.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/soc/codecs/wm8915.c b/sound/soc/codecs/wm8915.c index 083609418bf..4a3c5cc77e5 100644 --- a/sound/soc/codecs/wm8915.c +++ b/sound/soc/codecs/wm8915.c @@ -1831,6 +1831,7 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai, struct snd_soc_codec *codec = dai->codec; struct wm8915_priv *wm8915 = snd_soc_codec_get_drvdata(codec); int lfclk = 0; + int ratediv = 0; int src; int old; @@ -1862,6 +1863,8 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai, snd_soc_update_bits(codec, WM8915_AIF_RATE, WM8915_SYSCLK_RATE, 0); break; + case 24576000: + ratediv = WM8915_SYSCLK_DIV; case 12288000: snd_soc_update_bits(codec, WM8915_AIF_RATE, WM8915_SYSCLK_RATE, WM8915_SYSCLK_RATE); @@ -1877,8 +1880,8 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai, } snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, - WM8915_SYSCLK_SRC_MASK, - src << WM8915_SYSCLK_SRC_SHIFT); + WM8915_SYSCLK_SRC_MASK | WM8915_SYSCLK_DIV_MASK, + src << WM8915_SYSCLK_SRC_SHIFT | ratediv); snd_soc_update_bits(codec, WM8915_CLOCKING_1, WM8915_LFCLK_ENA, lfclk); snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, WM8915_SYSCLK_ENA, old); |