[PATCH 2/2 v2] [ARM] [IMX]: Fix clock use counter from underflow on multiple clk_disable().
Vladimir Zapolskiy
vzapolskiy at gmail.com
Wed Mar 17 07:03:31 EDT 2010
If clk_disable() is called for already disabled clock clk->usecount
value is decremented anyway. This leads to a problem that sequent
clk_enable() call doesn't enable the clock as expected.
Signed-off-by: Vladimir Zapolskiy <vzapolskiy at gmail.com>
Cc: Sascha Hauer <s.hauer at pengutronix.de>
Cc: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
---
arch/arm/plat-mxc/clock.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c
index 2daec3c..3189275 100644
--- a/arch/arm/plat-mxc/clock.c
+++ b/arch/arm/plat-mxc/clock.c
@@ -53,10 +53,14 @@ static void __clk_disable(struct clk *clk)
if (clk == NULL || IS_ERR(clk))
return;
+ if (!clk->usecount) {
+ WARN(1, "Trying to disable a clock with 0 usecount\n");
+ return;
+ }
+
__clk_disable(clk->parent);
__clk_disable(clk->secondary);
- WARN_ON(!clk->usecount);
if (!(--clk->usecount) && clk->disable)
clk->disable(clk);
}
--
1.6.6.1
More information about the linux-arm-kernel
mailing list