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
Reference in a new issue