diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-21 15:16:14 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-26 12:48:26 +0200 |
commit | c5f336cc003dfa071aaa7a01ed1c16232b227aa4 (patch) | |
tree | 11f4d0e24a4d98f713156ea77a1b44e1b187308f /sound/soc/codecs/wm8915.c | |
parent | Merge branch 'for-2.6.39' into for-2.6.40 (diff) | |
download | linux-c5f336cc003dfa071aaa7a01ed1c16232b227aa4.tar.xz linux-c5f336cc003dfa071aaa7a01ed1c16232b227aa4.zip |
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>
Diffstat (limited to 'sound/soc/codecs/wm8915.c')
-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 083609418bf4..4a3c5cc77e55 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); |