aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch')
-rw-r--r--recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch b/recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch
new file mode 100644
index 0000000000..c498da69fe
--- /dev/null
+++ b/recipes/linux/linux-smdk2443/0035-Fix-power-and-PLL.patch
@@ -0,0 +1,63 @@
+From fc2b709436ef9069dac1e2b46a8acb94a7169e8d Mon Sep 17 00:00:00 2001
+From: Graeme Gregory <gg@a10082.wolfsonmicro.main>
+Date: Mon, 26 Mar 2007 15:25:43 +0100
+Subject: [PATCH] Fix power and PLL
+
+bit 0 of POWER1 has oposite meaning to the rest of the bits so write this
+to zero to enable chip.
+
+enable the fractional PLL by enabling the correct bit in register.
+
+Signed-off-by: Graeme Gregory <gg@opensource.wolfsonmicro.com>
+---
+ sound/soc/codecs/wm8956.c | 4 ++--
+ sound/soc/codecs/wm8960.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/sound/soc/codecs/wm8956.c b/sound/soc/codecs/wm8956.c
+index 6e1bbc9..d88f572 100644
+--- a/sound/soc/codecs/wm8956.c
++++ b/sound/soc/codecs/wm8956.c
+@@ -314,7 +314,7 @@ static int wm8956_dapm_event(struct snd_soc_codec *codec, int event)
+ }
+ #endif
+ // tmp
+- wm8956_write(codec, WM8956_POWER1, 0xffff);
++ wm8956_write(codec, WM8956_POWER1, 0xfffe);
+ wm8956_write(codec, WM8956_POWER2, 0xffff);
+ wm8956_write(codec, WM8956_POWER3, 0xffff);
+ codec->dapm_state = event;
+@@ -388,7 +388,7 @@ static int wm8956_set_dai_pll(struct snd_soc_codec_dai *codec_dai,
+ return -EINVAL;
+
+ reg = wm8956_read_reg_cache(codec, WM8956_PLLN) & 0x1e0;
+- wm8956_write(codec, WM8956_PLLN, reg | (pll_div.pre_div << 4)
++ wm8956_write(codec, WM8956_PLLN, reg | (1<<5) | (pll_div.pre_div << 4)
+ | pll_div.n);
+ wm8956_write(codec, WM8956_PLLK1, pll_div.k >> 16 );
+ wm8956_write(codec, WM8956_PLLK2, (pll_div.k >> 8) & 0xff);
+diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
+index a754742..24cbb36 100644
+--- a/sound/soc/codecs/wm8960.c
++++ b/sound/soc/codecs/wm8960.c
+@@ -356,7 +356,7 @@ static int wm8960_dapm_event(struct snd_soc_codec *codec, int event)
+ }
+ #endif
+ // tmp
+- wm8960_write(codec, WM8960_POWER1, 0xffff);
++ wm8960_write(codec, WM8960_POWER1, 0xfffe);
+ wm8960_write(codec, WM8960_POWER2, 0xffff);
+ wm8960_write(codec, WM8960_POWER3, 0xffff);
+ codec->dapm_state = event;
+@@ -430,7 +430,7 @@ static int wm8960_set_dai_pll(struct snd_soc_codec_dai *codec_dai,
+ return -EINVAL;
+
+ reg = wm8960_read_reg_cache(codec, WM8960_PLLN) & 0x1e0;
+- wm8960_write(codec, WM8960_PLLN, reg | (pll_div.pre_div << 4)
++ wm8960_write(codec, WM8960_PLLN, reg | (1<<5) | (pll_div.pre_div << 4)
+ | pll_div.n);
+ wm8960_write(codec, WM8960_PLLK1, pll_div.k >> 16 );
+ wm8960_write(codec, WM8960_PLLK2, (pll_div.k >> 8) & 0xff);
+--
+1.5.0.3
+