]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/generic_linux/lgpio_pin.py
fix wrongly assuming "of_node/compatible" will always exist for all gpiochips
[Adafruit_Blinka-hackapet.git] / 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*"):
-        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)