diff options
Diffstat (limited to 'arch/arm/mach-omap2/cm2xxx.c')
-rw-r--r-- | arch/arm/mach-omap2/cm2xxx.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/arch/arm/mach-omap2/cm2xxx.c b/arch/arm/mach-omap2/cm2xxx.c index db650690e9d0..6774a53a3874 100644 --- a/arch/arm/mach-omap2/cm2xxx.c +++ b/arch/arm/mach-omap2/cm2xxx.c | |||
@@ -273,9 +273,6 @@ int omap2xxx_cm_wait_module_ready(s16 prcm_mod, u8 idlest_id, u8 idlest_shift) | |||
273 | 273 | ||
274 | static void omap2xxx_clkdm_allow_idle(struct clockdomain *clkdm) | 274 | static void omap2xxx_clkdm_allow_idle(struct clockdomain *clkdm) |
275 | { | 275 | { |
276 | if (atomic_read(&clkdm->usecount) > 0) | ||
277 | _clkdm_add_autodeps(clkdm); | ||
278 | |||
279 | omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 276 | omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
280 | clkdm->clktrctrl_mask); | 277 | clkdm->clktrctrl_mask); |
281 | } | 278 | } |
@@ -284,9 +281,6 @@ static void omap2xxx_clkdm_deny_idle(struct clockdomain *clkdm) | |||
284 | { | 281 | { |
285 | omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 282 | omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
286 | clkdm->clktrctrl_mask); | 283 | clkdm->clktrctrl_mask); |
287 | |||
288 | if (atomic_read(&clkdm->usecount) > 0) | ||
289 | _clkdm_del_autodeps(clkdm); | ||
290 | } | 284 | } |
291 | 285 | ||
292 | static int omap2xxx_clkdm_clk_enable(struct clockdomain *clkdm) | 286 | static int omap2xxx_clkdm_clk_enable(struct clockdomain *clkdm) |
@@ -298,18 +292,8 @@ static int omap2xxx_clkdm_clk_enable(struct clockdomain *clkdm) | |||
298 | 292 | ||
299 | hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 293 | hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
300 | clkdm->clktrctrl_mask); | 294 | clkdm->clktrctrl_mask); |
301 | 295 | if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_WAKEUP) | |
302 | if (hwsup) { | 296 | omap2xxx_clkdm_wakeup(clkdm); |
303 | /* Disable HW transitions when we are changing deps */ | ||
304 | omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
305 | clkdm->clktrctrl_mask); | ||
306 | _clkdm_add_autodeps(clkdm); | ||
307 | omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
308 | clkdm->clktrctrl_mask); | ||
309 | } else { | ||
310 | if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP) | ||
311 | omap2xxx_clkdm_wakeup(clkdm); | ||
312 | } | ||
313 | 297 | ||
314 | return 0; | 298 | return 0; |
315 | } | 299 | } |
@@ -324,17 +308,8 @@ static int omap2xxx_clkdm_clk_disable(struct clockdomain *clkdm) | |||
324 | hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | 308 | hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, |
325 | clkdm->clktrctrl_mask); | 309 | clkdm->clktrctrl_mask); |
326 | 310 | ||
327 | if (hwsup) { | 311 | if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_SLEEP) |
328 | /* Disable HW transitions when we are changing deps */ | 312 | omap2xxx_clkdm_sleep(clkdm); |
329 | omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
330 | clkdm->clktrctrl_mask); | ||
331 | _clkdm_del_autodeps(clkdm); | ||
332 | omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
333 | clkdm->clktrctrl_mask); | ||
334 | } else { | ||
335 | if (clkdm->flags & CLKDM_CAN_FORCE_SLEEP) | ||
336 | omap2xxx_clkdm_sleep(clkdm); | ||
337 | } | ||
338 | 313 | ||
339 | return 0; | 314 | return 0; |
340 | } | 315 | } |