diff options
Diffstat (limited to 'arch/sh/kernel/cpu/sh2a/clock-sh7203.c')
| -rw-r--r-- | arch/sh/kernel/cpu/sh2a/clock-sh7203.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c index 7e75d8f79502..95a008e8b735 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c | |||
| @@ -25,21 +25,11 @@ static const int pll1rate[]={8,12,16,0}; | |||
| 25 | static const int pfc_divisors[]={1,2,3,4,6,8,12}; | 25 | static const int pfc_divisors[]={1,2,3,4,6,8,12}; |
| 26 | #define ifc_divisors pfc_divisors | 26 | #define ifc_divisors pfc_divisors |
| 27 | 27 | ||
| 28 | #if (CONFIG_SH_CLK_MD == 0) | 28 | static unsigned int pll2_mult; |
| 29 | #define PLL2 (1) | ||
| 30 | #elif (CONFIG_SH_CLK_MD == 1) | ||
| 31 | #define PLL2 (2) | ||
| 32 | #elif (CONFIG_SH_CLK_MD == 2) | ||
| 33 | #define PLL2 (4) | ||
| 34 | #elif (CONFIG_SH_CLK_MD == 3) | ||
| 35 | #define PLL2 (4) | ||
| 36 | #else | ||
| 37 | #error "Illegal Clock Mode!" | ||
| 38 | #endif | ||
| 39 | 29 | ||
| 40 | static void master_clk_init(struct clk *clk) | 30 | static void master_clk_init(struct clk *clk) |
| 41 | { | 31 | { |
| 42 | clk->rate *= pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0003] * PLL2 ; | 32 | clk->rate *= pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0003] * pll2_mult; |
| 43 | } | 33 | } |
| 44 | 34 | ||
| 45 | static struct clk_ops sh7203_master_clk_ops = { | 35 | static struct clk_ops sh7203_master_clk_ops = { |
| @@ -79,6 +69,13 @@ static struct clk_ops *sh7203_clk_ops[] = { | |||
| 79 | 69 | ||
| 80 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 70 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) |
| 81 | { | 71 | { |
| 72 | if (test_mode_pin(MODE_PIN1)) | ||
| 73 | pll2_mult = 4; | ||
| 74 | else if (test_mode_pin(MODE_PIN0)) | ||
| 75 | pll2_mult = 2; | ||
| 76 | else | ||
| 77 | pll2_mult = 1; | ||
| 78 | |||
| 82 | if (idx < ARRAY_SIZE(sh7203_clk_ops)) | 79 | if (idx < ARRAY_SIZE(sh7203_clk_ops)) |
| 83 | *ops = sh7203_clk_ops[idx]; | 80 | *ops = sh7203_clk_ops[idx]; |
| 84 | } | 81 | } |
