Message ID | 20250210-gpio-set-array-helper-v3-1-d6a673674da8@baylibre.com |
---|---|
State | New |
Headers | show |
Series | gpiolib: add gpiod_multi_set_value_cansleep | expand |
On Mon, 10 Feb 2025 at 23:37, David Lechner <dlechner@baylibre.com> wrote: > Add a new gpiod_multi_set_value_cansleep() helper function with fewer > parameters than gpiod_set_array_value_cansleep(). > > Calling gpiod_set_array_value_cansleep() can get quite verbose. In many > cases, the first arguments all come from the same struct gpio_descs, so > having a separate function where we can just pass that cuts down on the > boilerplate. > > Signed-off-by: David Lechner <dlechner@baylibre.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert
On Mon, Feb 10, 2025 at 11:37 PM David Lechner <dlechner@baylibre.com> wrote: > Add a new gpiod_multi_set_value_cansleep() helper function with fewer > parameters than gpiod_set_array_value_cansleep(). > > Calling gpiod_set_array_value_cansleep() can get quite verbose. In many > cases, the first arguments all come from the same struct gpio_descs, so > having a separate function where we can just pass that cuts down on the > boilerplate. > > Signed-off-by: David Lechner <dlechner@baylibre.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index db2dfbae8edbd12059826183b1c0f73c7a58ff40..5cbd4afd78625367a761e224acc3f7336d310dd0 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h @@ -3,6 +3,7 @@ #define __LINUX_GPIO_CONSUMER_H #include <linux/bits.h> +#include <linux/err.h> #include <linux/types.h> struct acpi_device; @@ -655,4 +656,14 @@ static inline void gpiod_unexport(struct gpio_desc *desc) #endif /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */ +static inline int gpiod_multi_set_value_cansleep(struct gpio_descs *descs, + unsigned long *value_bitmap) +{ + if (IS_ERR_OR_NULL(descs)) + return PTR_ERR_OR_ZERO(descs); + + return gpiod_set_array_value_cansleep(descs->ndescs, descs->desc, + descs->info, value_bitmap); +} + #endif
Add a new gpiod_multi_set_value_cansleep() helper function with fewer parameters than gpiod_set_array_value_cansleep(). Calling gpiod_set_array_value_cansleep() can get quite verbose. In many cases, the first arguments all come from the same struct gpio_descs, so having a separate function where we can just pass that cuts down on the boilerplate. Signed-off-by: David Lechner <dlechner@baylibre.com> --- FYI, I dropped Linus' Reviewed-by: tag since adding the IS_ERR_OR_NULL() check isn't exactly trivial. --- include/linux/gpio/consumer.h | 11 +++++++++++ 1 file changed, 11 insertions(+)