diff mbox

[U-Boot,4/4] arm: bcm235xx: update clock framework

Message ID 1466552587-9953-5-git-send-email-srae@broadcom.com
State Accepted
Commit 8ada4e0ee652d2108c640a4daaf63865ad8dedb1
Delegated to: Tom Rini
Headers show

Commit Message

Steve Rae June 21, 2016, 11:43 p.m. UTC
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.brand@broadcom.com>
Signed-off-by: Steve Rae <srae@broadcom.com>
---

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

Comments

Tom Rini June 25, 2016, 2:53 a.m. UTC | #1
On Tue, Jun 21, 2016 at 04:43:07PM -0700, Steve Rae wrote:

> 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.brand@broadcom.com>
> Signed-off-by: Steve Rae <srae@broadcom.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

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 */