]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-omap2/clock.c
OMAP2/3 clock: omap2_clk_enable(): fix logic
[linux-2.6-omap-h63xx.git] / arch / arm / mach-omap2 / clock.c
index 55f43d0e6889a2076bcbc571781ad60028973c52..413fb684e9c43fda6d1bcd8e87c9761750f3c91d 100644 (file)
@@ -483,31 +483,32 @@ void omap2_clk_disable(struct clk *clk)
 
 int omap2_clk_enable(struct clk *clk)
 {
-       int ret = 0;
+       int ret;
 
        if (++clk->usecount > 1)
                return 0;
 
        omap2_clkdm_clk_enable(clk->clkdm.ptr, clk);
 
-       if (clk->parent)
-               ret = omap2_clk_enable(clk->parent);
+       if (clk->parent) {
+               int parent_ret;
 
-       if (ret != 0) {
-               clk->usecount--;
-               omap2_clkdm_clk_disable(clk->clkdm.ptr, clk);
-               return ret;
+               parent_ret = omap2_clk_enable(clk->parent);
+
+               if (parent_ret != 0) {
+                       clk->usecount--;
+                       omap2_clkdm_clk_disable(clk->clkdm.ptr, clk);
+                       return parent_ret;
+               }
        }
 
        ret = _omap2_clk_enable(clk);
 
        if (ret != 0) {
+               clk->usecount--;
                omap2_clkdm_clk_disable(clk->clkdm.ptr, clk);
-
-               if (clk->parent) {
+               if (clk->parent)
                        omap2_clk_disable(clk->parent);
-                       clk->usecount--;
-               }
        }
 
        return ret;