Commit 31bea231 authored by Nuno Sá's avatar Nuno Sá Committed by Bartosz Golaszewski

gpiolib: of: support bias pull disable

On top of looking at PULL_UP and PULL_DOWN flags, also look at
PULL_DISABLE and set the appropriate GPIO flag. The GPIO core will then
pass down this to controllers that support it.
Signed-off-by: default avatarNuno Sá <nuno.sa@analog.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
parent c269df8c
...@@ -354,6 +354,9 @@ struct gpio_desc *gpiod_get_from_of_node(const struct device_node *node, ...@@ -354,6 +354,9 @@ struct gpio_desc *gpiod_get_from_of_node(const struct device_node *node,
if (flags & OF_GPIO_PULL_DOWN) if (flags & OF_GPIO_PULL_DOWN)
lflags |= GPIO_PULL_DOWN; lflags |= GPIO_PULL_DOWN;
if (flags & OF_GPIO_PULL_DISABLE)
lflags |= GPIO_PULL_DISABLE;
ret = gpiod_configure_flags(desc, propname, lflags, dflags); ret = gpiod_configure_flags(desc, propname, lflags, dflags);
if (ret < 0) { if (ret < 0) {
gpiod_put(desc); gpiod_put(desc);
...@@ -556,6 +559,8 @@ struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id, ...@@ -556,6 +559,8 @@ struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
*flags |= GPIO_PULL_UP; *flags |= GPIO_PULL_UP;
if (of_flags & OF_GPIO_PULL_DOWN) if (of_flags & OF_GPIO_PULL_DOWN)
*flags |= GPIO_PULL_DOWN; *flags |= GPIO_PULL_DOWN;
if (of_flags & OF_GPIO_PULL_DISABLE)
*flags |= GPIO_PULL_DISABLE;
return desc; return desc;
} }
...@@ -621,6 +626,8 @@ static struct gpio_desc *of_parse_own_gpio(struct device_node *np, ...@@ -621,6 +626,8 @@ static struct gpio_desc *of_parse_own_gpio(struct device_node *np,
*lflags |= GPIO_PULL_UP; *lflags |= GPIO_PULL_UP;
if (xlate_flags & OF_GPIO_PULL_DOWN) if (xlate_flags & OF_GPIO_PULL_DOWN)
*lflags |= GPIO_PULL_DOWN; *lflags |= GPIO_PULL_DOWN;
if (xlate_flags & OF_GPIO_PULL_DISABLE)
*lflags |= GPIO_PULL_DISABLE;
if (of_property_read_bool(np, "input")) if (of_property_read_bool(np, "input"))
*dflags |= GPIOD_IN; *dflags |= GPIOD_IN;
......
...@@ -29,6 +29,7 @@ enum of_gpio_flags { ...@@ -29,6 +29,7 @@ enum of_gpio_flags {
OF_GPIO_TRANSITORY = 0x8, OF_GPIO_TRANSITORY = 0x8,
OF_GPIO_PULL_UP = 0x10, OF_GPIO_PULL_UP = 0x10,
OF_GPIO_PULL_DOWN = 0x20, OF_GPIO_PULL_DOWN = 0x20,
OF_GPIO_PULL_DISABLE = 0x40,
}; };
#ifdef CONFIG_OF_GPIO #ifdef CONFIG_OF_GPIO
......
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