On Sun, Feb 2, 2025 at 1:46 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote: > I think it was Ahmad or Marek who suggested that users aren't really > attached to the global numbering but to the ease of use of sysfs. > > I floated an idea of introducing a backward compatible change to sysfs > that would allow users to identify GPIOs by the label of their parent > chip and the hardware offset of the line within that chip (...) > > We could then encourage users to switch to using the chip-local > exports and eventually at least remove the global export/unexport pair > if we cannot make the entire sysfs class go away. > > Please let me know what you think about it? Yes, I think it is mostly equivalent to what I say in drivers/gpio/TODO, my only point being that when we add something like this, we put it in debugfs where it belongs, and as illustrated by your example, it is indeed used for debugging/exploring the system: ----------------8<----------------------------8<------------------------ Debugfs in place of sysfs The old sysfs code that enables simple uses of GPIOs from the command line is still popular despite the existance of the proper character device. The reason is that it is simple to use on root filesystems where you only have a minimal set of tools such as "cat", "echo" etc. The old sysfs still need to be strongly deprecated and removed as it relies on the global GPIO numberspace that assume a strict order of global GPIO numbers that do not change between boots and is independent of probe order. To solve this and provide an ABI that people can use for hacks and development, implement a debugfs interface to manipulate GPIO lines that can do everything that sysfs can do today: one directory per gpiochip and one file entry per line: /sys/kernel/debug/gpiochip/gpiochip0 /sys/kernel/debug/gpiochip/gpiochip0/gpio0 /sys/kernel/debug/gpiochip/gpiochip0/gpio1 /sys/kernel/debug/gpiochip/gpiochip0/gpio2 /sys/kernel/debug/gpiochip/gpiochip0/gpio3 ... /sys/kernel/debug/gpiochip/gpiochip1 /sys/kernel/debug/gpiochip/gpiochip1/gpio0 /sys/kernel/debug/gpiochip/gpiochip1/gpio1 ... The exact files and design of the debugfs interface can be discussed but the idea is to provide a low-level access point for debugging and hacking and to expose all lines without the need of any exporting. Also provide ample ammunition to shoot oneself in the foot, because this is debugfs after all. ----------------8<----------------------------8<------------------------ Yours, Linus Walleij