diff options
author | Barry Song <Baohua.Song@csr.com> | 2012-09-27 05:55:17 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-09-28 03:27:35 -0400 |
commit | 58d26c1eab8e94f89f17593e11d88a3821be6c3c (patch) | |
tree | c7b3c727f2d3db8ff24bcd6420d898be55b53343 /drivers/pinctrl | |
parent | 8dd9766f68f647692fa38f339fb70f9c8560e729 (diff) |
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>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r-- | drivers/pinctrl/pinctrl-sirf.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/drivers/pinctrl/pinctrl-sirf.c b/drivers/pinctrl/pinctrl-sirf.c index f309af2ced25..0f4f833e3c93 100644 --- a/drivers/pinctrl/pinctrl-sirf.c +++ b/drivers/pinctrl/pinctrl-sirf.c | |||
@@ -1458,15 +1458,10 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
1458 | static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset) | 1458 | static inline void sirfsoc_gpio_set_input(struct sirfsoc_gpio_bank *bank, unsigned ctrl_offset) |
1459 | { | 1459 | { |
1460 | u32 val; | 1460 | u32 val; |
1461 | unsigned long flags; | ||
1462 | |||
1463 | spin_lock_irqsave(&bank->lock, flags); | ||
1464 | 1461 | ||
1465 | val = readl(bank->chip.regs + ctrl_offset); | 1462 | val = readl(bank->chip.regs + ctrl_offset); |
1466 | val &= ~SIRFSOC_GPIO_CTL_OUT_EN_MASK; | 1463 | val &= ~SIRFSOC_GPIO_CTL_OUT_EN_MASK; |
1467 | writel(val, bank->chip.regs + ctrl_offset); | 1464 | writel(val, bank->chip.regs + ctrl_offset); |
1468 | |||
1469 | spin_unlock_irqrestore(&bank->lock, flags); | ||
1470 | } | 1465 | } |
1471 | 1466 | ||
1472 | static int sirfsoc_gpio_request(struct gpio_chip *chip, unsigned offset) | 1467 | static int sirfsoc_gpio_request(struct gpio_chip *chip, unsigned offset) |