pinctrl: sirf: fix spinlock deadlock in sirfsoc_gpio_set_input
sirfsoc_gpio_set_input() is called in those functions which have held the spinlock, so delete the duplicated locking. Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
		
					parent
					
						
							
								8dd9766f68
							
						
					
				
			
			
				commit
				
					
						58d26c1eab
					
				
			
		
					 1 changed files with 0 additions and 5 deletions
				
			
		| 
						 | 
					@ -1458,15 +1458,10 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
 | 
				
			||||||
static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset)
 | 
					static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 val;
 | 
						u32 val;
 | 
				
			||||||
	unsigned long flags;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	spin_lock_irqsave(&bank->lock, flags);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	val = readl(bank->chip.regs + ctrl_offset);
 | 
						val = readl(bank->chip.regs + ctrl_offset);
 | 
				
			||||||
	val &= ~SIRFSOC_GPIO_CTL_OUT_EN_MASK;
 | 
						val &= ~SIRFSOC_GPIO_CTL_OUT_EN_MASK;
 | 
				
			||||||
	writel(val, bank->chip.regs + ctrl_offset);
 | 
						writel(val, bank->chip.regs + ctrl_offset);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	spin_unlock_irqrestore(&bank->lock, flags);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int sirfsoc_gpio_request(struct gpio_chip *chip, unsigned offset)
 | 
					static int sirfsoc_gpio_request(struct gpio_chip *chip, unsigned offset)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue