]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
rules: add rule to generate unique symlinks for gpio devices
authorGero Schwäricke <gero.schwaericke@sevenlab.de>
Fri, 7 Nov 2025 15:09:17 +0000 (16:09 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 10 Nov 2025 14:22:08 +0000 (23:22 +0900)
Regular generated paths make it hard to identify individual GPIO
devices. This is a challenge when using multiple USB-to-GPIO adapters
like Diolan DLN2.

The unique symlinks from this rule can be used, e.g., with gpiod tools.

rules.d/60-gpiochip.rules [new file with mode: 0644]
rules.d/meson.build

diff --git a/rules.d/60-gpiochip.rules b/rules.d/60-gpiochip.rules
new file mode 100644 (file)
index 0000000..76c57b4
--- /dev/null
@@ -0,0 +1,17 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION=="remove", GOTO="gpiochip_end"
+SUBSYSTEM!="gpio", GOTO="gpiochip_end"
+
+KERNEL!="gpiochip[0-9]*", GOTO="gpiochip_end"
+
+IMPORT{builtin}="path_id"
+ENV{ID_PATH_WITH_USB_REVISION}=="?*", SYMLINK+="gpio/by-path/$env{ID_PATH_WITH_USB_REVISION}"
+
+SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
+ENV{ID_BUS}=="", GOTO="gpiochip_end"
+ENV{ID_SERIAL}=="", GOTO="gpiochip_end"
+ENV{ID_USB_INTERFACE_NUM}=="", GOTO="gpiochip_end"
+SYMLINK+="gpio/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}"
+
+LABEL="gpiochip_end"
index 933a84859adfa90100cfe86a899ae7fe8aa039f5..25e742cdfde736fa99ce96bf6aad373d3f6cce0a 100644 (file)
@@ -12,6 +12,7 @@ rules = [
                '60-drm.rules',
                '60-evdev.rules',
                '60-fido-id.rules',
+               '60-gpiochip.rules',
                '60-infiniband.rules',
                '60-input-id.rules',
                '60-persistent-alsa.rules',