pinctrl: bcm2835: Fix initial value for direction_output
Currently the provided initial value for bcm2835_gpio_direction_output
has no effect. So fix this issue by changing the value before
changing the GPIO direction. As a result we need to move the function below
bcm2835_gpio_set.
Suggested-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Acked-by: Eric Anholt <eric@anholt.net>
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Fixes: e1b2dc70cd
("pinctrl: add bcm2835 driver")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
99a735b3c2
commit
4c02cba18c
|
@ -342,12 +342,6 @@ static int bcm2835_gpio_get(struct gpio_chip *chip, unsigned offset)
|
||||||
return bcm2835_gpio_get_bit(pc, GPLEV0, offset);
|
return bcm2835_gpio_get_bit(pc, GPLEV0, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bcm2835_gpio_direction_output(struct gpio_chip *chip,
|
|
||||||
unsigned offset, int value)
|
|
||||||
{
|
|
||||||
return pinctrl_gpio_direction_output(chip->base + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||||
{
|
{
|
||||||
struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
|
struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
|
||||||
|
@ -355,6 +349,13 @@ static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||||
bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset);
|
bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int bcm2835_gpio_direction_output(struct gpio_chip *chip,
|
||||||
|
unsigned offset, int value)
|
||||||
|
{
|
||||||
|
bcm2835_gpio_set(chip, offset, value);
|
||||||
|
return pinctrl_gpio_direction_output(chip->base + offset);
|
||||||
|
}
|
||||||
|
|
||||||
static int bcm2835_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
|
static int bcm2835_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
|
||||||
{
|
{
|
||||||
struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
|
struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev);
|
||||||
|
|
Loading…
Reference in New Issue