The gpiod_ (GPIO descriptor) API used with Linux differs from barebox' normal GPIO API: - gpiod handles are opaque pointers and not an integer, which users have an expectation of stability for - gpiod API uses logic levels by default with separate raw API for physical level instead of physical level by default and separate API taking active level into account. The barebox gpiod_ API mimics the latter point, but still uses integers requiring ugly and arguably error prone conversions when porting kernel code. This series fixes that by adding proper struct gpio_desc API like in Linux and then builds upon that to port the kernel gpio-mux driver. v1 -> v2: - drop unrelated help command patch - drop gpio-mux patch for separate sending out - rebase onto next - fix and add stubs for !CONFIG_GPIOLIB - rename internal gpioinfo_ functions to gpiodesc_ v1 was here: https://lore.barebox.org/barebox/20230621092700.GE18491@xxxxxxxxxxxxxx/T/#t Ahmad Fatoum (9): driver: include dev_print and family from <driver.h> include: linux/printk: define new dev_errp_probe gpio: have gpiod_ functions return and accept pointers gpio: gpiolib: rename struct gpio_info to gpio_desc gpiolib: export proper gpio descriptor API bitmap: implement bitmap_{to,from}_arr{32,64} gpiolib: factor out finding gpio property gpiolib: add support for requesting and setting gpiod arrays gpiolib: rename gpioinfo_ to gpiodesc_ drivers/gpio/gpio-pca953x.c | 9 +- drivers/gpio/gpiolib.c | 528 +++++++++++++++++------ drivers/mci/mci_spi.c | 13 +- drivers/mtd/nand/atmel/nand-controller.c | 40 +- drivers/mtd/nand/nand_base.c | 6 +- drivers/net/designware_eqos.c | 26 +- drivers/net/ksz8873.c | 13 +- drivers/net/ksz9477.c | 13 +- drivers/net/realtek-dsa/realtek-mdio.c | 10 +- drivers/net/realtek-dsa/realtek-smi.c | 18 +- drivers/net/realtek-dsa/realtek.h | 6 +- drivers/net/sja1105.c | 25 +- drivers/nvmem/starfive-otp.c | 12 +- drivers/pci/pcie-dw-rockchip.c | 14 +- drivers/power/reset/gpio-poweroff.c | 14 +- drivers/power/reset/gpio-restart.c | 23 +- drivers/regulator/fixed.c | 27 +- drivers/sound/gpio-beeper.c | 14 +- drivers/usb/misc/onboard_usb_hub.c | 11 +- drivers/video/mipi_dbi.c | 8 +- drivers/video/panel-ilitek-ili9341.c | 17 +- drivers/video/panel-mipi-dbi.c | 17 +- drivers/watchdog/gpio_wdt.c | 22 +- include/driver.h | 1 + include/gpiod.h | 79 +--- include/linux/bitmap.h | 101 +++++ include/linux/gpio/consumer.h | 224 ++++++++++ include/linux/mtd/rawnand.h | 4 +- include/linux/printk.h | 3 + include/video/mipi_dbi.h | 7 +- lib/bitmap.c | 103 +++++ 31 files changed, 1019 insertions(+), 389 deletions(-) create mode 100644 include/linux/gpio/consumer.h -- 2.39.2