So far, GPIO bias configuration was done exclusively by pinctrl drivers. All barebox pinctrl drivers work by consuming a device tree node with a binding that differs from driver to driver and then applying the configuration described within. Neither GPIO or pinctrl node have any insight on what in particular is being configured. This is problematic when wanting to support following device tree binding, which is so far being ignored: gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_DOWN)>; This series enables support for this binding for gpio-keys on STM32 platforms. More support will follow in future when providers are extended to support the gpio_ops::set_config operation and consumers are switched to use the GPIO descriptor API. Ahmad Fatoum (11): gpio: make gpio.h header self-contained gpiolib: permit GPIO drivers to implement struct gpio_ops::set_config pinctrl: stm32: implement generic struct gpio_ops::set_config gpiolib: turn request/active_low into bit flags gpiolib: don't use GPIO number API in of_hog_gpio gpiolib: store all OF flags into GPIO descriptor gpiolib: add support for OF GPIO configuration binding gpiolib: use dev_gpiod_get_index device node argument throughout gpiolib: export function to get struct gpio_desc from index input: gpio_keys: switch to GPIO descriptor API input: gpio-keys: request with label in DT if available drivers/gpio/Kconfig | 14 ++ drivers/gpio/gpiolib.c | 254 +++++++++++++++++++++++++------- drivers/input/Kconfig | 2 +- drivers/input/gpio_keys.c | 69 +++++---- drivers/of/Kconfig | 15 ++ drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/pinctrl-stm32.c | 41 ++++++ include/gpio.h | 4 + include/linux/gpio/consumer.h | 19 +++ include/of_gpio.h | 6 + 10 files changed, 337 insertions(+), 88 deletions(-) -- 2.39.2