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 <mhban@samsung.com> Signed-off-by: Jaecheol Lee <jc.lee@samsung.com> Signed-off-by: Sunyoung Kang <sy0816.kang@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
		
					parent
					
						
							
								8942ad89a0
							
						
					
				
			
			
				commit
				
					
						0cdf3affd3
					
				
			
		
					 1 changed files with 8 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue