aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/codecs/wm8915.c7
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);