mbox series

[v2,00/18] gpio: cdev: add uAPI V2

Message ID 20200725041955.9985-1-warthog618@gmail.com
Headers show
Series gpio: cdev: add uAPI V2 | expand

Message

Kent Gibson July 25, 2020, 4:19 a.m. UTC
This patchset defines and implements adds a new version of the
GPIO CDEV uAPI to address existing 32/64-bit alignment issues, add
support for debounce, event sequence numbers, and allowing for requested
lines with different configurations.
It provides some future proofing by adding optional configuration fields
and padding reserved for future use.

The series can be partitioned into two sets; the first eleven
contain the V2 uAPI implementation, and the final seven port
the GPIO tools to the V2 uAPI and extend them to use new uAPI features.

The more complicated patches include their own commentary where
appropriate.

Cheers,
Kent.

Changes since v1:
 - split out cleanup patches into a separate series.
 - split implementation patch into a patch for each ioctl or major feature.
 - split tool port patch into a patch per tool.
 - rework uAPI to allow requested lines with different configurations.

Kent Gibson (18):
  gpio: uapi: define GPIO_MAX_NAME_SIZE for array sizes
  gpio: uapi: define uAPI v2
  gpiolib: make cdev a build option
  gpiolib: add build option for CDEV v1 ABI
  gpiolib: cdev: support GPIO_GET_LINE_IOCTL and
    GPIOLINE_GET_VALUES_IOCTL
  gpiolib: cdev: support GPIO_GET_LINEINFO_V2_IOCTL and
    GPIO_GET_LINEINFO_WATCH_V2_IOCTL
  gpiolib: cdev: support edge detection for uAPI v2
  gpiolib: cdev: support GPIOLINE_SET_CONFIG_IOCTL
  gpiolib: cdev: support GPIOLINE_SET_VALUES_IOCTL
  gpiolib: cdev: support setting debounce
  gpio: uapi: document uAPI v1 as deprecated
  tools: gpio: port lsgpio to v2 uAPI
  tools: gpio: port gpio-watch to v2 uAPI
  tools: gpio: rename nlines to num_lines
  tools: gpio: port gpio-hammer to v2 uAPI
  tools: gpio: port gpio-event-mon to v2 uAPI
  tools: gpio: add debounce support to gpio-event-mon
  tools: gpio: add multi-line monitoring to gpio-event-mon

 drivers/gpio/Kconfig        |   28 +-
 drivers/gpio/Makefile       |    2 +-
 drivers/gpio/gpiolib-cdev.c | 1296 ++++++++++++++++++++++++++++++++++-
 drivers/gpio/gpiolib-cdev.h |   15 +
 drivers/gpio/gpiolib.c      |    2 +
 drivers/gpio/gpiolib.h      |    6 +
 include/uapi/linux/gpio.h   |  327 ++++++++-
 tools/gpio/gpio-event-mon.c |  137 ++--
 tools/gpio/gpio-hammer.c    |   27 +-
 tools/gpio/gpio-utils.c     |  117 ++--
 tools/gpio/gpio-utils.h     |   48 +-
 tools/gpio/gpio-watch.c     |   10 +-
 tools/gpio/lsgpio.c         |  102 ++-
 13 files changed, 1882 insertions(+), 235 deletions(-)


base-commit: 8fc3ed3a474d76cd76dd0a154ea904373e9a5530