diff options
Diffstat (limited to 'arch/arm/mach-shmobile/clock-sh7372.c')
-rw-r--r-- | arch/arm/mach-shmobile/clock-sh7372.c | 50 |
1 files changed, 8 insertions, 42 deletions
diff --git a/arch/arm/mach-shmobile/clock-sh7372.c b/arch/arm/mach-shmobile/clock-sh7372.c index 45d21fe317f4..7e105932c09d 100644 --- a/arch/arm/mach-shmobile/clock-sh7372.c +++ b/arch/arm/mach-shmobile/clock-sh7372.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | #include <linux/sh_clk.h> | 22 | #include <linux/sh_clk.h> |
23 | #include <linux/clkdev.h> | 23 | #include <linux/clkdev.h> |
24 | #include <mach/clock.h> | ||
24 | #include <mach/common.h> | 25 | #include <mach/common.h> |
25 | 26 | ||
26 | /* SH7372 registers */ | 27 | /* SH7372 registers */ |
@@ -83,39 +84,12 @@ struct clk sh7372_extal2_clk = { | |||
83 | .rate = 48000000, | 84 | .rate = 48000000, |
84 | }; | 85 | }; |
85 | 86 | ||
86 | /* A fixed divide-by-2 block */ | 87 | SH_CLK_RATIO(div2, 1, 2); |
87 | static unsigned long div2_recalc(struct clk *clk) | ||
88 | { | ||
89 | return clk->parent->rate / 2; | ||
90 | } | ||
91 | |||
92 | static struct sh_clk_ops div2_clk_ops = { | ||
93 | .recalc = div2_recalc, | ||
94 | }; | ||
95 | 88 | ||
96 | /* Divide dv_clki by two */ | 89 | SH_FIXED_RATIO_CLKg(sh7372_dv_clki_div2_clk, sh7372_dv_clki_clk, div2); |
97 | struct clk sh7372_dv_clki_div2_clk = { | 90 | SH_FIXED_RATIO_CLK(extal1_div2_clk, sh7372_extal1_clk, div2); |
98 | .ops = &div2_clk_ops, | 91 | SH_FIXED_RATIO_CLK(extal2_div2_clk, sh7372_extal2_clk, div2); |
99 | .parent = &sh7372_dv_clki_clk, | 92 | SH_FIXED_RATIO_CLK(extal2_div4_clk, extal2_div2_clk, div2); |
100 | }; | ||
101 | |||
102 | /* Divide extal1 by two */ | ||
103 | static struct clk extal1_div2_clk = { | ||
104 | .ops = &div2_clk_ops, | ||
105 | .parent = &sh7372_extal1_clk, | ||
106 | }; | ||
107 | |||
108 | /* Divide extal2 by two */ | ||
109 | static struct clk extal2_div2_clk = { | ||
110 | .ops = &div2_clk_ops, | ||
111 | .parent = &sh7372_extal2_clk, | ||
112 | }; | ||
113 | |||
114 | /* Divide extal2 by four */ | ||
115 | static struct clk extal2_div4_clk = { | ||
116 | .ops = &div2_clk_ops, | ||
117 | .parent = &extal2_div2_clk, | ||
118 | }; | ||
119 | 93 | ||
120 | /* PLLC0 and PLLC1 */ | 94 | /* PLLC0 and PLLC1 */ |
121 | static unsigned long pllc01_recalc(struct clk *clk) | 95 | static unsigned long pllc01_recalc(struct clk *clk) |
@@ -147,10 +121,7 @@ static struct clk pllc1_clk = { | |||
147 | }; | 121 | }; |
148 | 122 | ||
149 | /* Divide PLLC1 by two */ | 123 | /* Divide PLLC1 by two */ |
150 | static struct clk pllc1_div2_clk = { | 124 | SH_FIXED_RATIO_CLK(pllc1_div2_clk, pllc1_clk, div2); |
151 | .ops = &div2_clk_ops, | ||
152 | .parent = &pllc1_clk, | ||
153 | }; | ||
154 | 125 | ||
155 | /* PLLC2 */ | 126 | /* PLLC2 */ |
156 | 127 | ||
@@ -342,7 +313,7 @@ static struct clk_div4_table div4_table = { | |||
342 | }; | 313 | }; |
343 | 314 | ||
344 | enum { DIV4_I, DIV4_ZG, DIV4_B, DIV4_M1, DIV4_CSIR, | 315 | enum { DIV4_I, DIV4_ZG, DIV4_B, DIV4_M1, DIV4_CSIR, |
345 | DIV4_ZTR, DIV4_ZT, DIV4_ZX, DIV4_HP, | 316 | DIV4_ZX, DIV4_HP, |
346 | DIV4_ISPB, DIV4_S, DIV4_ZB, DIV4_ZB3, DIV4_CP, | 317 | DIV4_ISPB, DIV4_S, DIV4_ZB, DIV4_ZB3, DIV4_CP, |
347 | DIV4_DDRP, DIV4_NR }; | 318 | DIV4_DDRP, DIV4_NR }; |
348 | 319 | ||
@@ -355,8 +326,6 @@ static struct clk div4_clks[DIV4_NR] = { | |||
355 | [DIV4_B] = DIV4(FRQCRA, 8, 0x6fff, CLK_ENABLE_ON_INIT), | 326 | [DIV4_B] = DIV4(FRQCRA, 8, 0x6fff, CLK_ENABLE_ON_INIT), |
356 | [DIV4_M1] = DIV4(FRQCRA, 4, 0x6fff, CLK_ENABLE_ON_INIT), | 327 | [DIV4_M1] = DIV4(FRQCRA, 4, 0x6fff, CLK_ENABLE_ON_INIT), |
357 | [DIV4_CSIR] = DIV4(FRQCRA, 0, 0x6fff, 0), | 328 | [DIV4_CSIR] = DIV4(FRQCRA, 0, 0x6fff, 0), |
358 | [DIV4_ZTR] = DIV4(FRQCRB, 20, 0x6fff, 0), | ||
359 | [DIV4_ZT] = DIV4(FRQCRB, 16, 0x6fff, 0), | ||
360 | [DIV4_ZX] = DIV4(FRQCRB, 12, 0x6fff, 0), | 329 | [DIV4_ZX] = DIV4(FRQCRB, 12, 0x6fff, 0), |
361 | [DIV4_HP] = DIV4(FRQCRB, 4, 0x6fff, 0), | 330 | [DIV4_HP] = DIV4(FRQCRB, 4, 0x6fff, 0), |
362 | [DIV4_ISPB] = DIV4(FRQCRC, 20, 0x6fff, 0), | 331 | [DIV4_ISPB] = DIV4(FRQCRC, 20, 0x6fff, 0), |
@@ -516,8 +485,6 @@ static struct clk_lookup lookups[] = { | |||
516 | CLKDEV_CON_ID("b_clk", &div4_clks[DIV4_B]), | 485 | CLKDEV_CON_ID("b_clk", &div4_clks[DIV4_B]), |
517 | CLKDEV_CON_ID("m1_clk", &div4_clks[DIV4_M1]), | 486 | CLKDEV_CON_ID("m1_clk", &div4_clks[DIV4_M1]), |
518 | CLKDEV_CON_ID("csir_clk", &div4_clks[DIV4_CSIR]), | 487 | CLKDEV_CON_ID("csir_clk", &div4_clks[DIV4_CSIR]), |
519 | CLKDEV_CON_ID("ztr_clk", &div4_clks[DIV4_ZTR]), | ||
520 | CLKDEV_CON_ID("zt_clk", &div4_clks[DIV4_ZT]), | ||
521 | CLKDEV_CON_ID("zx_clk", &div4_clks[DIV4_ZX]), | 488 | CLKDEV_CON_ID("zx_clk", &div4_clks[DIV4_ZX]), |
522 | CLKDEV_CON_ID("hp_clk", &div4_clks[DIV4_HP]), | 489 | CLKDEV_CON_ID("hp_clk", &div4_clks[DIV4_HP]), |
523 | CLKDEV_CON_ID("ispb_clk", &div4_clks[DIV4_ISPB]), | 490 | CLKDEV_CON_ID("ispb_clk", &div4_clks[DIV4_ISPB]), |
@@ -654,5 +621,4 @@ void __init sh7372_clock_init(void) | |||
654 | shmobile_clk_init(); | 621 | shmobile_clk_init(); |
655 | else | 622 | else |
656 | panic("failed to setup sh7372 clocks\n"); | 623 | panic("failed to setup sh7372 clocks\n"); |
657 | |||
658 | } | 624 | } |