[PATCH v2 0/5] gpio: add support for pull-up/pull-down configuration

From: Thomas Petazzoni
Date: Thu Feb 07 2019 - 11:29:12 EST


Hello,

As we started discussing in [1], it would be useful to have a way to
configure pull-up/pull-down resistors for simple GPIO controllers that
don't have any pinmuxing capability, and therefore no interaction with
the pinctrl subsystem.

This is a second iteration of the patches (the v1 was posted at
https://patchwork.ozlabs.org/cover/1020392/).

Changes since v1:

- Add a comment in the binding that explicitly states that the new
bit 4 and 5 should only be used for HW with a simple on/off
pull-up/pull-down configuration. More complex HW should use a pin
control binding. Suggested by Linus Walleij.

- Change gpiod_set_debounce() and gpiod_set_transitory() to use the
new gpio_set_config() helper. This is done in a new, separate
patch. Suggested by Linus Walleij.

- Add error checking in gpiod_configure_flags() to make sure pull-up
and pull-down are not both enabled on the same GPIO. Suggested by
Jan KundrÃt. Jan suggested to put this in the code converting from
DT properties to internal flags, but it actually makes more sense
to do it in gpiod_configure_flags(), independently from DT parsing.

- Add a check in gpio-pca953x driver that pull-up/pull-down is indeed
supported by the underlying HW in the
pca953x_gpio_set_pull_up_down() function. Noticed by Linus Walleij.

- Move the changes in include/dt-bindings/gpio/gpio.h to the
dt-bindings patch, as suggested by Rob Herring.

Rob: due to the changes in the dt-bindings patch, I have not kept your
Acked-by.

Thomas

[1] https://marc.info/?l=linux-gpio&m=154491873506701&w=2

Thomas Petazzoni (5):
dt-bindings: gpio: document the new pull-up/pull-down flags
gpio: rename gpio_set_drive_single_ended() to gpio_set_config()
gpio: use new gpio_set_config() helper in more places
gpio: add core support for pull-up/pull-down configuration
gpio: pca953x: add ->set_config implementation

.../devicetree/bindings/gpio/gpio.txt | 12 ++++
drivers/gpio/gpio-pca953x.c | 66 ++++++++++++++++++-
drivers/gpio/gpiolib-of.c | 5 ++
drivers/gpio/gpiolib.c | 50 +++++++++-----
drivers/gpio/gpiolib.h | 2 +
include/dt-bindings/gpio/gpio.h | 6 ++
include/linux/gpio/machine.h | 2 +
include/linux/of_gpio.h | 2 +
8 files changed, 127 insertions(+), 18 deletions(-)

--
2.20.1