diff options
Diffstat (limited to 'arch/arm/plat-omap/clock.c')
-rw-r--r-- | arch/arm/plat-omap/clock.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 7f45c7c3e673..f1179ad4be1b 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -100,6 +100,7 @@ void clk_disable(struct clk *clk) | |||
100 | return; | 100 | return; |
101 | 101 | ||
102 | spin_lock_irqsave(&clockfw_lock, flags); | 102 | spin_lock_irqsave(&clockfw_lock, flags); |
103 | BUG_ON(clk->usecount == 0); | ||
103 | if (arch_clock->clk_disable) | 104 | if (arch_clock->clk_disable) |
104 | arch_clock->clk_disable(clk); | 105 | arch_clock->clk_disable(clk); |
105 | spin_unlock_irqrestore(&clockfw_lock, flags); | 106 | spin_unlock_irqrestore(&clockfw_lock, flags); |
@@ -322,6 +323,31 @@ EXPORT_SYMBOL(clk_allow_idle); | |||
322 | 323 | ||
323 | /*-------------------------------------------------------------------------*/ | 324 | /*-------------------------------------------------------------------------*/ |
324 | 325 | ||
326 | #ifdef CONFIG_OMAP_RESET_CLOCKS | ||
327 | /* | ||
328 | * Disable any unused clocks left on by the bootloader | ||
329 | */ | ||
330 | static int __init clk_disable_unused(void) | ||
331 | { | ||
332 | struct clk *ck; | ||
333 | unsigned long flags; | ||
334 | |||
335 | list_for_each_entry(ck, &clocks, node) { | ||
336 | if (ck->usecount > 0 || (ck->flags & ALWAYS_ENABLED) || | ||
337 | ck->enable_reg == 0) | ||
338 | continue; | ||
339 | |||
340 | spin_lock_irqsave(&clockfw_lock, flags); | ||
341 | if (arch_clock->clk_disable_unused) | ||
342 | arch_clock->clk_disable_unused(ck); | ||
343 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
344 | } | ||
345 | |||
346 | return 0; | ||
347 | } | ||
348 | late_initcall(clk_disable_unused); | ||
349 | #endif | ||
350 | |||
325 | int __init clk_init(struct clk_functions * custom_clocks) | 351 | int __init clk_init(struct clk_functions * custom_clocks) |
326 | { | 352 | { |
327 | if (!custom_clocks) { | 353 | if (!custom_clocks) { |