gpio: mvebu: correctly set the value in direction_output()
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 23 Oct 2012 08:17:05 +0000 (10:17 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 24 Oct 2012 05:36:35 +0000 (07:36 +0200)
The ->direction_output() operation of gpio_chip is supposed to set the
direction to output but also to set the GPIO to an initial
value. Unfortunately, this last part was not done until now, causing
for example the LEDs to not be properly set to their default initial
value. This patch fixes this by calling the mvebu_gpio_set() function
from mvebu_gpio_direction_output() before configuring the GPIO as an
output GPIO.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-mvebu.c

index 902af437eaf26e9dc1b5c2cf3f1e902b70d5e237..1bb43e3f9a61b5b4469c9ef76a7d8d360ec8dcbb 100644 (file)
@@ -244,6 +244,8 @@ static int mvebu_gpio_direction_output(struct gpio_chip *chip, unsigned pin,
        if (ret)
                return ret;
 
+       mvebu_gpio_set(chip, pin, value);
+
        spin_lock_irqsave(&mvchip->lock, flags);
        u = readl_relaxed(mvebu_gpioreg_io_conf(mvchip));
        u &= ~(1 << pin);