mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 13:23:18 +00:00
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: Nuno Sá <nuno.sa@analog.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
This commit is contained in:
parent
c269df8c5a
commit
31bea23119
@ -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,
|
|||||||
*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,
|
|||||||
*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 {
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user