diff options
-rw-r--r-- | arch/arm/mach-shmobile/clock-r8a7740.c | 54 |
1 files changed, 9 insertions, 45 deletions
diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c index 161e128e2157..c0d39aa6de50 100644 --- a/arch/arm/mach-shmobile/clock-r8a7740.c +++ b/arch/arm/mach-shmobile/clock-r8a7740.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/sh_clk.h> | 23 | #include <linux/sh_clk.h> |
24 | #include <linux/clkdev.h> | 24 | #include <linux/clkdev.h> |
25 | #include <mach/clock.h> | ||
25 | #include <mach/common.h> | 26 | #include <mach/common.h> |
26 | #include <mach/r8a7740.h> | 27 | #include <mach/r8a7740.h> |
27 | 28 | ||
@@ -97,42 +98,13 @@ static struct clk dv_clk = { | |||
97 | .rate = 27000000, | 98 | .rate = 27000000, |
98 | }; | 99 | }; |
99 | 100 | ||
100 | static unsigned long div_recalc(struct clk *clk) | 101 | SH_CLK_RATIO(div2, 1, 2); |
101 | { | 102 | SH_CLK_RATIO(div1k, 1, 1024); |
102 | return clk->parent->rate / (int)(clk->priv); | ||
103 | } | ||
104 | |||
105 | static struct sh_clk_ops div_clk_ops = { | ||
106 | .recalc = div_recalc, | ||
107 | }; | ||
108 | 103 | ||
109 | /* extal1 / 2 */ | 104 | SH_FIXED_RATIO_CLK(extal1_div2_clk, extal1_clk, div2); |
110 | static struct clk extal1_div2_clk = { | 105 | SH_FIXED_RATIO_CLK(extal1_div1024_clk, extal1_clk, div1k); |
111 | .ops = &div_clk_ops, | 106 | SH_FIXED_RATIO_CLK(extal1_div2048_clk, extal1_div2_clk, div1k); |
112 | .priv = (void *)2, | 107 | SH_FIXED_RATIO_CLK(extal2_div2_clk, extal2_clk, div2); |
113 | .parent = &extal1_clk, | ||
114 | }; | ||
115 | |||
116 | /* extal1 / 1024 */ | ||
117 | static struct clk extal1_div1024_clk = { | ||
118 | .ops = &div_clk_ops, | ||
119 | .priv = (void *)1024, | ||
120 | .parent = &extal1_clk, | ||
121 | }; | ||
122 | |||
123 | /* extal1 / 2 / 1024 */ | ||
124 | static struct clk extal1_div2048_clk = { | ||
125 | .ops = &div_clk_ops, | ||
126 | .priv = (void *)1024, | ||
127 | .parent = &extal1_div2_clk, | ||
128 | }; | ||
129 | |||
130 | /* extal2 / 2 */ | ||
131 | static struct clk extal2_div2_clk = { | ||
132 | .ops = &div_clk_ops, | ||
133 | .priv = (void *)2, | ||
134 | .parent = &extal2_clk, | ||
135 | }; | ||
136 | 108 | ||
137 | static struct sh_clk_ops followparent_clk_ops = { | 109 | static struct sh_clk_ops followparent_clk_ops = { |
138 | .recalc = followparent_recalc, | 110 | .recalc = followparent_recalc, |
@@ -143,11 +115,7 @@ static struct clk system_clk = { | |||
143 | .ops = &followparent_clk_ops, | 115 | .ops = &followparent_clk_ops, |
144 | }; | 116 | }; |
145 | 117 | ||
146 | static struct clk system_div2_clk = { | 118 | SH_FIXED_RATIO_CLK(system_div2_clk, system_clk, div2); |
147 | .ops = &div_clk_ops, | ||
148 | .priv = (void *)2, | ||
149 | .parent = &system_clk, | ||
150 | }; | ||
151 | 119 | ||
152 | /* r_clk */ | 120 | /* r_clk */ |
153 | static struct clk r_clk = { | 121 | static struct clk r_clk = { |
@@ -184,11 +152,7 @@ static struct clk pllc1_clk = { | |||
184 | }; | 152 | }; |
185 | 153 | ||
186 | /* PLLC1 / 2 */ | 154 | /* PLLC1 / 2 */ |
187 | static struct clk pllc1_div2_clk = { | 155 | SH_FIXED_RATIO_CLK(pllc1_div2_clk, pllc1_clk, div2); |
188 | .ops = &div_clk_ops, | ||
189 | .priv = (void *)2, | ||
190 | .parent = &pllc1_clk, | ||
191 | }; | ||
192 | 156 | ||
193 | /* USB clock */ | 157 | /* USB clock */ |
194 | /* | 158 | /* |