pinctrl: meson: implement the gpio_chip get_direction callback
Implement the get_direction callback so we read the direction from the actual GPIO controller register. This is recommended by the gpio_chip kernel doc. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Link: https://lore.kernel.org/r/20200417183349.1283092-2-martin.blumenstingl@googlemail.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
4e3ec9e407
commit
ef1d0bce38
|
@ -549,6 +549,18 @@ static const struct pinconf_ops meson_pinconf_ops = {
|
|||
.is_generic = true,
|
||||
};
|
||||
|
||||
static int meson_gpio_get_direction(struct gpio_chip *chip, unsigned gpio)
|
||||
{
|
||||
struct meson_pinctrl *pc = gpiochip_get_data(chip);
|
||||
int ret;
|
||||
|
||||
ret = meson_pinconf_get_output(pc, gpio);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return ret ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN;
|
||||
}
|
||||
|
||||
static int meson_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
|
||||
{
|
||||
return meson_pinconf_set_output(gpiochip_get_data(chip), gpio, false);
|
||||
|
@ -591,6 +603,7 @@ static int meson_gpiolib_register(struct meson_pinctrl *pc)
|
|||
pc->chip.parent = pc->dev;
|
||||
pc->chip.request = gpiochip_generic_request;
|
||||
pc->chip.free = gpiochip_generic_free;
|
||||
pc->chip.get_direction = meson_gpio_get_direction;
|
||||
pc->chip.direction_input = meson_gpio_direction_input;
|
||||
pc->chip.direction_output = meson_gpio_direction_output;
|
||||
pc->chip.get = meson_gpio_get;
|
||||
|
|
Loading…
Reference in a new issue