diff options
author | Axel Lin <axel.lin@ingics.com> | 2015-01-30 05:26:25 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-03-02 09:35:41 -0500 |
commit | fd9c963c5661af3403e77e312c0d9941773b6c1b (patch) | |
tree | f13369d51a26c11dcbefd074512564841bc9c6bf | |
parent | c517d838eb7d07bbe9507871fab3931deccff539 (diff) |
gpio: mb86s70: Return error if requesting an already assigned gpio
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/gpio/gpio-mb86s7x.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-mb86s7x.c b/drivers/gpio/gpio-mb86s7x.c index 21b1ce5abdfe..ee93c0ab0a59 100644 --- a/drivers/gpio/gpio-mb86s7x.c +++ b/drivers/gpio/gpio-mb86s7x.c | |||
@@ -58,6 +58,11 @@ static int mb86s70_gpio_request(struct gpio_chip *gc, unsigned gpio) | |||
58 | spin_lock_irqsave(&gchip->lock, flags); | 58 | spin_lock_irqsave(&gchip->lock, flags); |
59 | 59 | ||
60 | val = readl(gchip->base + PFR(gpio)); | 60 | val = readl(gchip->base + PFR(gpio)); |
61 | if (!(val & OFFSET(gpio))) { | ||
62 | spin_unlock_irqrestore(&gchip->lock, flags); | ||
63 | return -EINVAL; | ||
64 | } | ||
65 | |||
61 | val &= ~OFFSET(gpio); | 66 | val &= ~OFFSET(gpio); |
62 | writel(val, gchip->base + PFR(gpio)); | 67 | writel(val, gchip->base + PFR(gpio)); |
63 | 68 | ||