sh: sh7785 pll configuration from mode pin
authorMagnus Damm <damm@igel.co.jp>
Thu, 28 May 2009 12:06:17 +0000 (12:06 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 1 Jun 2009 06:57:12 +0000 (15:57 +0900)
This patch modifies the sh7785 clock code to use the MODE4
value to switch between 72x and 36x PLL multiplication.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/cpu/sh4a/clock-sh7785.c

index a4a9bcb..705b023 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/cpufreq.h>
 #include <asm/clock.h>
 #include <asm/freq.h>
+#include <cpu/sh7785.h>
 
 static unsigned int div2[] = { 1, 2, 4, 6, 8, 12, 16, 18,
                               24, 32, 36, 48 };
@@ -80,12 +81,11 @@ static struct clk_ops frqmr_clk_ops = {
 
 static unsigned long pll_recalc(struct clk *clk)
 {
-       /*
-        * XXX: PLL1 multiplier is locked for the default clock mode,
-        * when mode pin detection and configuration support is added,
-        * select the multiplier dynamically.
-        */
-       return clk->parent->rate * 36;
+       int multiplier;
+
+       multiplier = test_mode_pin(MODE_PIN_MODE4) ? 36 : 72;
+
+       return clk->parent->rate * multiplier;
 }
 
 static struct clk_ops pll_clk_ops = {