linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC/RFT 00/15] gpio: sysfs: add a per-chip export/unexport attribute pair
@ 2025-06-10 14:38 Bartosz Golaszewski
  2025-06-10 14:38 ` [PATCH RFC/RFT 01/15] Documentation: gpio: undocument removed behavior Bartosz Golaszewski
                   ` (18 more replies)
  0 siblings, 19 replies; 32+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 14:38 UTC (permalink / raw)
  To: Ahmad Fatoum, Kent Gibson, Jan Lübbe, Marek Vasut,
	Geert Uytterhoeven, Linus Walleij, Bartosz Golaszewski
  Cc: linux-gpio, linux-kernel, Bartosz Golaszewski

Following our discussion[1], here's a proposal for extending the sysfs
interface with attributes not referring to GPIO lines by their global
numbers in a backward compatible way.

Long story short: there is now a new class device for each GPIO chip.
It's called chipX where X is the ID of the device as per the driver
model and it lives next to the old gpiochipABC where ABC is the GPIO
base. Each new chip class device has a pair of export/unexport
attributes which work similarly to the global ones under /sys/class/gpio
but take hardware offsets within the chip as input, instead of the
global numbers. Finally, each exported line appears at the same time as
the global /sys/class/gpio/gpioABC as well as per-chip
/sys/class/gpio/chipX/gpioY sysfs group.

First, there are some documentation updates, followed by a set of
updates to the sysfs code that's useful even without the new
functionality. Then the actual implementation of a parallel GPIO chip
entry not containing the base GPIO number in the name and the
corresponding sysfs attribute group for each exported line that lives
under the new chip class device. Finally: also allow to compile out the
legacy parts leaving only the new elements of the sysfs ABI.

This series passes the compatibility tests I wrote while working on the
user-space compatibility layer for sysfs[2].

[1] https://lore.kernel.org/all/CAMRc=McUCeZcU6co1aN54rTudo+JfPjjForu4iKQ5npwXk6GXA@mail.gmail.com/
[2] https://github.com/brgl/gpio-sysfs-compat-tests

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
Bartosz Golaszewski (15):
      Documentation: gpio: undocument removed behavior
      Documentation: gpio: document the active_low field in the sysfs ABI
      gpio: sysfs: call mutex_destroy() in gpiod_unexport()
      gpio: sysfs: refactor the coding style
      gpio: sysfs: remove unneeded headers
      gpio: sysfs: remove the mockdev pointer from struct gpio_device
      gpio: sysfs: add a parallel class device for each GPIO chip using device IDs
      gpio: sysfs: only get the dirent reference for the value attr once
      gpio: sysfs: pass gpiod_data directly to internal GPIO sysfs functions
      gpio: sysfs: don't use driver data in sysfs callbacks for line attributes
      gpio: sysfs: rename the data variable in gpiod_(un)export()
      gpio: sysfs: don't look up exported lines as class devices
      gpio: sysfs: export the GPIO directory locally in the gpiochip<id> directory
      gpio: sysfs: allow disabling the legacy parts of the GPIO sysfs interface
      gpio: TODO: remove the task for the sysfs rework

 Documentation/ABI/obsolete/sysfs-gpio |  12 +-
 drivers/gpio/Kconfig                  |   8 +
 drivers/gpio/TODO                     |  13 -
 drivers/gpio/gpiolib-sysfs.c          | 650 ++++++++++++++++++++++++----------
 drivers/gpio/gpiolib.h                |   3 -
 5 files changed, 474 insertions(+), 212 deletions(-)
---
base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494
change-id: 20250402-gpio-sysfs-chip-export-84ac424b61c5

Best regards,
-- 
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2025-06-23  8:27 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-10 14:38 [PATCH RFC/RFT 00/15] gpio: sysfs: add a per-chip export/unexport attribute pair Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 01/15] Documentation: gpio: undocument removed behavior Bartosz Golaszewski
2025-06-11  8:15   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 02/15] Documentation: gpio: document the active_low field in the sysfs ABI Bartosz Golaszewski
2025-06-11  8:15   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 03/15] gpio: sysfs: call mutex_destroy() in gpiod_unexport() Bartosz Golaszewski
2025-06-11  8:16   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 04/15] gpio: sysfs: refactor the coding style Bartosz Golaszewski
2025-06-11  8:16   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 05/15] gpio: sysfs: remove unneeded headers Bartosz Golaszewski
2025-06-11  8:17   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 06/15] gpio: sysfs: remove the mockdev pointer from struct gpio_device Bartosz Golaszewski
2025-06-11  8:19   ` Linus Walleij
2025-06-10 14:38 ` [PATCH RFC/RFT 07/15] gpio: sysfs: add a parallel class device for each GPIO chip using device IDs Bartosz Golaszewski
2025-06-11  8:27   ` Linus Walleij
2025-06-23  8:02     ` Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 08/15] gpio: sysfs: only get the dirent reference for the value attr once Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 09/15] gpio: sysfs: pass gpiod_data directly to internal GPIO sysfs functions Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 10/15] gpio: sysfs: don't use driver data in sysfs callbacks for line attributes Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 11/15] gpio: sysfs: rename the data variable in gpiod_(un)export() Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 12/15] gpio: sysfs: don't look up exported lines as class devices Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 13/15] gpio: sysfs: export the GPIO directory locally in the gpiochip<id> directory Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 14/15] gpio: sysfs: allow disabling the legacy parts of the GPIO sysfs interface Bartosz Golaszewski
2025-06-10 14:38 ` [PATCH RFC/RFT 15/15] gpio: TODO: remove the task for the sysfs rework Bartosz Golaszewski
2025-06-13  8:02 ` [PATCH RFC/RFT 00/15] gpio: sysfs: add a per-chip export/unexport attribute pair Geert Uytterhoeven
2025-06-16 12:27   ` Bartosz Golaszewski
2025-06-18 13:38 ` Jan Lübbe
2025-06-18 14:53   ` Bartosz Golaszewski
2025-06-18 15:56   ` Bartosz Golaszewski
2025-06-23  8:27     ` Jan Lübbe
2025-06-18 14:54 ` Bartosz Golaszewski
2025-06-20  7:30 ` (subset) " Bartosz Golaszewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).