Skip to content

gpio: introduce descriptor-based interface

Alexandre Courbot linux-arch linux-arm-kernel linux-devicetree linux-m68k lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 26 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4gpiolib: introduce descriptor-based GPIO interfacedrivers/gpio/devres.c drivers/gpio/gpiolib.c include/asm-generic/gpio.h +2 more+552 -34519 replies
2/4gpiolib: add gpiod_get and gpiod_put functionsdrivers/gpio/gpiolib.c include/linux/gpio/consumer.h include/linux/gpio/driver.h+193 -02 replies
3/4gpiolib: of: convert OF helpers to descriptor APIdrivers/gpio/gpiolib-of.c include/linux/gpio/consumer.h include/linux/gpio/driver.h +1 more+120 -730 replies
4/4gpiolib: add documentation for new gpiod_ APIDocumentation/gpio.txt+92 -20 replies

Reviews trailers per patch

1 of 4 patches has a Reviewed-by or Acked-by.

PatchWill DeaconGrant LikelyArnd BergmannNicolas PitreLinus Walleij
1/4Tape-measuring-service-offered-by A-b A-b A-b A-b
2/4
3/4
4/4

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v1 thread

Cover letter [PATCH 0/4] gpio: introduce descriptor-based interface

This series introduce a first take at implementing the RFC for the new GPIO API that I submitted last month. It proposes a new, opaque descriptor-based GPIO API that becomes available when GPIOlib is compiled, and provides a safer, more abstract alternative to the current integer-based interface. GPIOlib internals are also switched to use the descriptor logic, and the former integer API becomes a lightweight wrapper around the new descriptor-based API.

Functionally speaking the new API is identical to the integer-based API, with only the prefix changing from gpio_ to gpiod_. However, the second patch introduces new functions for obtaining GPIOs from a device and a consumer name, in a fashion similar to what is done with e.g. regulators and PWMs.

GPIOs can then be provided either by board-specific lookup tables, or through the device tree. Device tree lookup might require some attention as it does not handle properties with multiple descriptors yet. Also, there is currently no equivalent of gpio_request_array() and GPIOs can only be allocated one-by-one. Feedback about the relevancy of batch requesting GPIOs is welcome.

This patch series also prepares GPIOlib for the next step, which is getting rid of ARCH_NR_GPIOS and of the static array in GPIOlib and replace the latter with per-chip arrays that are allocated when the chip is added. Some challenge may arise from the fact that gpiochip_add is potentially called before kmalloc is available.

Anyway, I expect this patchset to go through several iterations in order to address the points mentioned above (and of course the ones I missed). As usual, your valuable feedback is most welcome.

Alexandre Courbot (4):
gpiolib: introduce descriptor-based GPIO interface
gpiolib: add gpiod_get and gpiod_put functions
gpiolib: of: convert OF helpers to descriptor API
gpiolib: add documentation for new gpiod_ API

 Documentation/gpio.txt        |  94 +++++-
 drivers/gpio/devres.c         |  59 +++-
 drivers/gpio/gpiolib-of.c     |  26 +-
 drivers/gpio/gpiolib.c        | 648 ++++++++++++++++++++++++++++--------------
 include/asm-generic/gpio.h    | 176 ++++--------
 include/linux/gpio/consumer.h | 128 +++++++++
 include/linux/gpio/driver.h   | 171 +++++++++++
 include/linux/of_gpio.h       |  73 +----
 8 files changed, 956 insertions(+), 419 deletions(-)
 create mode 100644 include/linux/gpio/consumer.h
 create mode 100644 include/linux/gpio/driver.h
Signature · 1 line
1.8.1