aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2015-01-30 05:26:25 -0500
committerLinus Walleij <linus.walleij@linaro.org>2015-03-02 09:35:41 -0500
commitfd9c963c5661af3403e77e312c0d9941773b6c1b (patch)
treef13369d51a26c11dcbefd074512564841bc9c6bf
parentc517d838eb7d07bbe9507871fab3931deccff539 (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.c5
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