Commit 7ea45643 authored by Alexey Charkov's avatar Alexey Charkov Committed by Linus Walleij

pinctrl: vt8500: Ensure value reg is updated when setting direction

Current code only touches the direction register when setting direction
to output, which breaks logic like

echo high > /sys/class/gpio/gpio0/direction

which is expected to also set the value. This patch also adds a call
to update the value register when setting direction to output.
Signed-off-by: default avatarAlexey Charkov <alchark@gmail.com>
Acked-by: default avatarTony Prisk <linux@prisktech.co.nz>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 4b660a7f
...@@ -523,17 +523,6 @@ static int wmt_gpio_get_direction(struct gpio_chip *chip, unsigned offset) ...@@ -523,17 +523,6 @@ static int wmt_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
return GPIOF_DIR_IN; return GPIOF_DIR_IN;
} }
static int wmt_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
{
return pinctrl_gpio_direction_input(chip->base + offset);
}
static int wmt_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
int value)
{
return pinctrl_gpio_direction_output(chip->base + offset);
}
static int wmt_gpio_get_value(struct gpio_chip *chip, unsigned offset) static int wmt_gpio_get_value(struct gpio_chip *chip, unsigned offset)
{ {
struct wmt_pinctrl_data *data = dev_get_drvdata(chip->dev); struct wmt_pinctrl_data *data = dev_get_drvdata(chip->dev);
...@@ -568,6 +557,18 @@ static void wmt_gpio_set_value(struct gpio_chip *chip, unsigned offset, ...@@ -568,6 +557,18 @@ static void wmt_gpio_set_value(struct gpio_chip *chip, unsigned offset,
wmt_clearbits(data, reg_data_out, BIT(bit)); wmt_clearbits(data, reg_data_out, BIT(bit));
} }
static int wmt_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
{
return pinctrl_gpio_direction_input(chip->base + offset);
}
static int wmt_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
int value)
{
wmt_gpio_set_value(chip, offset, value);
return pinctrl_gpio_direction_output(chip->base + offset);
}
static struct gpio_chip wmt_gpio_chip = { static struct gpio_chip wmt_gpio_chip = {
.label = "gpio-wmt", .label = "gpio-wmt",
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment