[PATCH 1/2 v2] imx: optimize __clk_enable() and __clk_disable() functions.

Vladimir Zapolskiy vzapolskiy at gmail.com
Thu Mar 18 09:27:45 EDT 2010


To remove unnecessary calls of functions with invalid argumets make
the checks before a call.

Signed-off-by: Vladimir Zapolskiy <vzapolskiy at gmail.com>
---
 arch/arm/plat-mxc/clock.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c
index 323ff8c..ec4af90 100644
--- a/arch/arm/plat-mxc/clock.c
+++ b/arch/arm/plat-mxc/clock.c
@@ -50,24 +50,25 @@ static DEFINE_MUTEX(clocks_mutex);
 
 static void __clk_disable(struct clk *clk)
 {
-	if (clk == NULL || IS_ERR(clk))
-		return;
-
-	__clk_disable(clk->parent);
-	__clk_disable(clk->secondary);
-
 	WARN_ON(!clk->usecount);
+
 	if (!(--clk->usecount) && clk->disable)
 		clk->disable(clk);
+
+	if (clk->secondary)
+		__clk_disable(clk->secondary);
+
+	if (clk->parent)
+		__clk_disable(clk->parent);
 }
 
 static int __clk_enable(struct clk *clk)
 {
-	if (clk == NULL || IS_ERR(clk))
-		return -EINVAL;
+	if (clk->parent)
+		__clk_enable(clk->parent);
 
-	__clk_enable(clk->parent);
-	__clk_enable(clk->secondary);
+	if (clk->secondary)
+		__clk_enable(clk->secondary);
 
 	if (clk->usecount++ == 0 && clk->enable)
 		clk->enable(clk);
@@ -99,9 +100,7 @@ EXPORT_SYMBOL(clk_enable);
  */
 void clk_disable(struct clk *clk)
 {
-	if (clk == NULL || IS_ERR(clk))
-		return;
-
+	BUG_ON(clk == NULL || IS_ERR(clk));
 	mutex_lock(&clocks_mutex);
 	__clk_disable(clk);
 	mutex_unlock(&clocks_mutex);
-- 
1.6.6.1




More information about the linux-arm-kernel mailing list