mbox series

[RFC,0/2] Introduce configfs-based interface for gpio-aggregator

Message ID 20250129155525.663780-1-koichiro.den@canonical.com
Headers show
Series Introduce configfs-based interface for gpio-aggregator | expand

Message

Koichiro Den Jan. 29, 2025, 3:55 p.m. UTC
This RFC patch series proposes adding a configfs-based interface to
gpio-aggregator to address limitations in the existing 'new_device'
interface.

The existing 'new_device' interface has several limitations:

  #1. No way to determine when GPIO aggregator creation is complete.
  #2. No way to retrieve errors when creating a GPIO aggregator.
  #3. No way to trace a GPIO line of an aggregator back to its
      corresponding physical device.
  #4. The 'new_device' echo does not indicate which virtual gpiochip.<N>
      was created.
  #5. No way to assign names to GPIO lines exported through an aggregator.

Although issues #1 to #3 could technically be resolved easily without
configfs, using configfs offers a streamlined, modern, and extensible
approach, especially since gpio-sim and gpio-virtuser already utilize
configfs.

This RFC patch series includes two commits:

* [PATCH 1/2] implements the configfs interface and resolves the above
  issues:
  - #1, Wait for probe completion using a platform bus notifier,
        in the same manner as gpio-virtuser.
  - #2, Introduce a 'live' attribute (like gpio-virtuser/gpio-sim),
        returning -ENXIO when probe fails.
  - #3, Structure configfs directories to clearly map virtual lines to
        physical ones.
  - #4, Add a read-only 'dev_name' attribute exposing the platform bus
        device name.
  - #5, Allow users to set custom line names via a 'name' attribute.

* [PATCH 2/2] provides documentation on using the new interface.


Koichiro Den (2):
  gpio: aggregator: Introduce configfs interface
  Documentation: gpio: document configfs interface for gpio-aggregator

 .../admin-guide/gpio/gpio-aggregator.rst      |  86 +++
 drivers/gpio/gpio-aggregator.c                | 673 +++++++++++++++++-
 2 files changed, 757 insertions(+), 2 deletions(-)