]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
fix wrongly assuming "of_node/compatible" will always exist for all gpiochips
authorMark Rossington <136482781+mrossington@users.noreply.github.com>
Wed, 7 May 2025 10:13:47 +0000 (11:13 +0100)
committerGitHub <noreply@github.com>
Wed, 7 May 2025 10:13:47 +0000 (11:13 +0100)
src/adafruit_blinka/microcontroller/generic_linux/lgpio_pin.py

index 25a8268f9c4481d17691f30169eefe820809481b..3097b02bcc0e4acfd55a026864821d0b5abbb46c 100644 (file)
@@ -15,14 +15,15 @@ def _get_gpiochip():
     used for userspace GPIO access.
     """
     for dev in Path("/sys/bus/gpio/devices").glob("gpiochip*"):
     used for userspace GPIO access.
     """
     for dev in Path("/sys/bus/gpio/devices").glob("gpiochip*"):
-        drivers = set((dev / "of_node/compatible").read_text().split("\0"))
-        #   check if driver names are intended for userspace control
-        if drivers & {
-            "raspberrypi,rp1-gpio",
-            "raspberrypi,bcm2835-gpio",
-            "raspberrypi,bcm2711-gpio",
-        }:
-            return lgpio.gpiochip_open(int(dev.name[-1]))
+        if Path(dev / "of_node/compatible").is_file():
+            drivers = set((dev / "of_node/compatible").read_text().split("\0"))
+            #   check if driver names are intended for userspace control
+            if drivers & {
+                "raspberrypi,rp1-gpio",
+                "raspberrypi,bcm2835-gpio",
+                "raspberrypi,bcm2711-gpio",
+            }:
+                return lgpio.gpiochip_open(int(dev.name[-1]))
     # return chip0 as a fallback
     return lgpio.gpiochip_open(0)
 
     # return chip0 as a fallback
     return lgpio.gpiochip_open(0)