diff options
author | Rajendra Nayak <rnayak@ti.com> | 2011-02-25 18:06:48 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2011-02-25 18:06:48 -0500 |
commit | 4da71ae607fc657075286abd2774041ff4d00fe5 (patch) | |
tree | c43b8dfe4c8bae5bd3aa66771488804112154f6e /arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |
parent | 5cd1937b6d5990fe5d5287d925f05afd38e9fb02 (diff) |
OMAP: clockdomain: Arch specific funcs for clkdm_clk_enable/disable
Define the following architecture specific funtions for omap2/3/4
.clkdm_clk_enable
.clkdm_clk_disable
Convert the platform-independent framework to call these functions.
Also rename the api's by removing the omap2_ preamble.
Hence call omap2_clkdm_k_enable as clkdm_clk_enable and
omap2_clkdm_clk_disable as clkdm_clk_disable.a
Remove unused functions (_enable/_disable_hwsup) and unsed
headers from clockdomain.c file.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/clockdomain2xxx_3xxx.c')
-rw-r--r-- | arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c index 25c27a5c722f..48d0db7e6069 100644 --- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | |||
@@ -146,6 +146,71 @@ static void omap2_clkdm_deny_idle(struct clockdomain *clkdm) | |||
146 | _clkdm_del_autodeps(clkdm); | 146 | _clkdm_del_autodeps(clkdm); |
147 | } | 147 | } |
148 | 148 | ||
149 | static void _enable_hwsup(struct clockdomain *clkdm) | ||
150 | { | ||
151 | if (cpu_is_omap24xx()) | ||
152 | omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
153 | clkdm->clktrctrl_mask); | ||
154 | else if (cpu_is_omap34xx()) | ||
155 | omap3xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
156 | clkdm->clktrctrl_mask); | ||
157 | } | ||
158 | |||
159 | static void _disable_hwsup(struct clockdomain *clkdm) | ||
160 | { | ||
161 | if (cpu_is_omap24xx()) | ||
162 | omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
163 | clkdm->clktrctrl_mask); | ||
164 | else if (cpu_is_omap34xx()) | ||
165 | omap3xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
166 | clkdm->clktrctrl_mask); | ||
167 | } | ||
168 | |||
169 | |||
170 | static int omap2_clkdm_clk_enable(struct clockdomain *clkdm) | ||
171 | { | ||
172 | bool hwsup = false; | ||
173 | |||
174 | if (!clkdm->clktrctrl_mask) | ||
175 | return 0; | ||
176 | |||
177 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
178 | clkdm->clktrctrl_mask); | ||
179 | |||
180 | if (hwsup) { | ||
181 | /* Disable HW transitions when we are changing deps */ | ||
182 | _disable_hwsup(clkdm); | ||
183 | _clkdm_add_autodeps(clkdm); | ||
184 | _enable_hwsup(clkdm); | ||
185 | } else { | ||
186 | clkdm_wakeup(clkdm); | ||
187 | } | ||
188 | |||
189 | return 0; | ||
190 | } | ||
191 | |||
192 | static int omap2_clkdm_clk_disable(struct clockdomain *clkdm) | ||
193 | { | ||
194 | bool hwsup = false; | ||
195 | |||
196 | if (!clkdm->clktrctrl_mask) | ||
197 | return 0; | ||
198 | |||
199 | hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
200 | clkdm->clktrctrl_mask); | ||
201 | |||
202 | if (hwsup) { | ||
203 | /* Disable HW transitions when we are changing deps */ | ||
204 | _disable_hwsup(clkdm); | ||
205 | _clkdm_del_autodeps(clkdm); | ||
206 | _enable_hwsup(clkdm); | ||
207 | } else { | ||
208 | clkdm_sleep(clkdm); | ||
209 | } | ||
210 | |||
211 | return 0; | ||
212 | } | ||
213 | |||
149 | static int omap3_clkdm_sleep(struct clockdomain *clkdm) | 214 | static int omap3_clkdm_sleep(struct clockdomain *clkdm) |
150 | { | 215 | { |
151 | omap3xxx_cm_clkdm_force_sleep(clkdm->pwrdm.ptr->prcm_offs, | 216 | omap3xxx_cm_clkdm_force_sleep(clkdm->pwrdm.ptr->prcm_offs, |
@@ -187,6 +252,8 @@ struct clkdm_ops omap2_clkdm_operations = { | |||
187 | .clkdm_wakeup = omap2_clkdm_wakeup, | 252 | .clkdm_wakeup = omap2_clkdm_wakeup, |
188 | .clkdm_allow_idle = omap2_clkdm_allow_idle, | 253 | .clkdm_allow_idle = omap2_clkdm_allow_idle, |
189 | .clkdm_deny_idle = omap2_clkdm_deny_idle, | 254 | .clkdm_deny_idle = omap2_clkdm_deny_idle, |
255 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | ||
256 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | ||
190 | }; | 257 | }; |
191 | 258 | ||
192 | struct clkdm_ops omap3_clkdm_operations = { | 259 | struct clkdm_ops omap3_clkdm_operations = { |
@@ -202,4 +269,6 @@ struct clkdm_ops omap3_clkdm_operations = { | |||
202 | .clkdm_wakeup = omap3_clkdm_wakeup, | 269 | .clkdm_wakeup = omap3_clkdm_wakeup, |
203 | .clkdm_allow_idle = omap3_clkdm_allow_idle, | 270 | .clkdm_allow_idle = omap3_clkdm_allow_idle, |
204 | .clkdm_deny_idle = omap3_clkdm_deny_idle, | 271 | .clkdm_deny_idle = omap3_clkdm_deny_idle, |
272 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | ||
273 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | ||
205 | }; | 274 | }; |