The handling of the "usage counter" is incorrect, and the clock should
only be disabled when transitioning from 1 to 0.

Reported-by: Chris Brand <chris.br...@broadcom.com>
Signed-off-by: Steve Rae <s...@broadcom.com>
---

 arch/arm/cpu/armv7/bcm235xx/clk-core.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/cpu/armv7/bcm235xx/clk-core.c 
b/arch/arm/cpu/armv7/bcm235xx/clk-core.c
index 2b5da6b..a326dfe 100644
--- a/arch/arm/cpu/armv7/bcm235xx/clk-core.c
+++ b/arch/arm/cpu/armv7/bcm235xx/clk-core.c
@@ -449,10 +449,9 @@ int clk_enable(struct clk *c)
        if (ret)
                return ret;
 
-       if (!c->use_cnt) {
-               c->use_cnt++;
+       if (!c->use_cnt)
                ret = c->ops->enable(c, 1);
-       }
+       c->use_cnt++;
 
        return ret;
 }
@@ -464,9 +463,10 @@ void clk_disable(struct clk *c)
        if (!c->ops || !c->ops->enable)
                return;
 
-       if (c->use_cnt) {
+       if (c->use_cnt > 0) {
                c->use_cnt--;
-               c->ops->enable(c, 0);
+               if (c->use_cnt == 0)
+                       c->ops->enable(c, 0);
        }
 
        /* disable parent */
-- 
1.8.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to