[ARM] OMAP3: PM: Make sure clk_disable_unused() order is correct
authorTero Kristo <tero.kristo@nokia.com>
Wed, 28 Jan 2009 19:27:45 +0000 (12:27 -0700)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 8 Feb 2009 17:50:40 +0000 (17:50 +0000)
Current implementation will disable clocks in the order defined in clock34xx.h,
at least DPLL4_M2X2 will hang in certain cases (and prevent retention / off)
if clocks are not disabled in correct order. This patch makes sure the parent
clocks will be active when disabling a clock.

linux-omap source commit is 672680063420ef8c8c4e7271984bb9cc08171d29.

Signed-off-by: Tero Kristo <tero.kristo@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-omap2/clock.c

index 18fddb660ff90b17b208798e6aabb237dad4d4a5..478ca660fffddc165b25cd77162fc04c249e138d 100644 (file)
@@ -1000,6 +1000,10 @@ void omap2_clk_disable_unused(struct clk *clk)
                return;
 
        printk(KERN_INFO "Disabling unused clock \"%s\"\n", clk->name);
-       _omap2_clk_disable(clk);
+       if (cpu_is_omap34xx()) {
+               omap2_clk_enable(clk);
+               omap2_clk_disable(clk);
+       } else
+               _omap2_clk_disable(clk);
 }
 #endif