From: Minho Ban Date: Fri, 20 Jan 2012 02:03:07 +0000 (+0900) Subject: ARM: SAMSUNG: use spin_lock_irqsave() in clk_{enable,disable} X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=0cdf3affd3ddf4ff1a88e32b89bc629d569793f3;p=linux-beck.git ARM: SAMSUNG: use spin_lock_irqsave() in clk_{enable,disable} The clk_enable()and clk_disable() can be used process and ISR either. And actually it is used for real product and other platforms use it now. So spin_lock_irqsave() should be used instead. Signed-off-by: Minho Ban Signed-off-by: Jaecheol Lee Signed-off-by: Sunyoung Kang Signed-off-by: Kukjin Kim --- diff --git a/arch/arm/plat-samsung/clock.c b/arch/arm/plat-samsung/clock.c index 10f71179071f..65c5eca475e7 100644 --- a/arch/arm/plat-samsung/clock.c +++ b/arch/arm/plat-samsung/clock.c @@ -84,31 +84,35 @@ static int clk_null_enable(struct clk *clk, int enable) int clk_enable(struct clk *clk) { + unsigned long flags; + if (IS_ERR(clk) || clk == NULL) return -EINVAL; clk_enable(clk->parent); - spin_lock(&clocks_lock); + spin_lock_irqsave(&clocks_lock, flags); if ((clk->usage++) == 0) (clk->enable)(clk, 1); - spin_unlock(&clocks_lock); + spin_unlock_irqrestore(&clocks_lock, flags); return 0; } void clk_disable(struct clk *clk) { + unsigned long flags; + if (IS_ERR(clk) || clk == NULL) return; - spin_lock(&clocks_lock); + spin_lock_irqsave(&clocks_lock, flags); if ((--clk->usage) == 0) (clk->enable)(clk, 0); - spin_unlock(&clocks_lock); + spin_unlock_irqrestore(&clocks_lock, flags); clk_disable(clk->parent); }