diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-21 09:16:14 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-04-26 06:48:26 -0400 |
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 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, | |||
1831 | struct snd_soc_codec *codec = dai->codec; | 1831 | struct snd_soc_codec *codec = dai->codec; |
1832 | struct wm8915_priv *wm8915 = snd_soc_codec_get_drvdata(codec); | 1832 | struct wm8915_priv *wm8915 = snd_soc_codec_get_drvdata(codec); |
1833 | int lfclk = 0; | 1833 | int lfclk = 0; |
1834 | int ratediv = 0; | ||
1834 | int src; | 1835 | int src; |
1835 | int old; | 1836 | int old; |
1836 | 1837 | ||
@@ -1862,6 +1863,8 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai, | |||
1862 | snd_soc_update_bits(codec, WM8915_AIF_RATE, | 1863 | snd_soc_update_bits(codec, WM8915_AIF_RATE, |
1863 | WM8915_SYSCLK_RATE, 0); | 1864 | WM8915_SYSCLK_RATE, 0); |
1864 | break; | 1865 | break; |
1866 | case 24576000: | ||
1867 | ratediv = WM8915_SYSCLK_DIV; | ||
1865 | case 12288000: | 1868 | case 12288000: |
1866 | snd_soc_update_bits(codec, WM8915_AIF_RATE, | 1869 | snd_soc_update_bits(codec, WM8915_AIF_RATE, |
1867 | WM8915_SYSCLK_RATE, WM8915_SYSCLK_RATE); | 1870 | WM8915_SYSCLK_RATE, WM8915_SYSCLK_RATE); |
@@ -1877,8 +1880,8 @@ static int wm8915_set_sysclk(struct snd_soc_dai *dai, | |||
1877 | } | 1880 | } |
1878 | 1881 | ||
1879 | snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, | 1882 | snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, |
1880 | WM8915_SYSCLK_SRC_MASK, | 1883 | WM8915_SYSCLK_SRC_MASK | WM8915_SYSCLK_DIV_MASK, |
1881 | src << WM8915_SYSCLK_SRC_SHIFT); | 1884 | src << WM8915_SYSCLK_SRC_SHIFT | ratediv); |
1882 | snd_soc_update_bits(codec, WM8915_CLOCKING_1, WM8915_LFCLK_ENA, lfclk); | 1885 | snd_soc_update_bits(codec, WM8915_CLOCKING_1, WM8915_LFCLK_ENA, lfclk); |
1883 | snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, | 1886 | snd_soc_update_bits(codec, WM8915_AIF_CLOCKING_1, |
1884 | WM8915_SYSCLK_ENA, old); | 1887 | WM8915_SYSCLK_ENA, old); |