]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
allwinner h618: support mainline gpiochip
authorAugust <2819763+Dangku@users.noreply.github.com>
Mon, 2 Sep 2024 14:36:38 +0000 (22:36 +0800)
committerAugust <2819763+Dangku@users.noreply.github.com>
Mon, 2 Sep 2024 14:36:38 +0000 (22:36 +0800)
src/adafruit_blinka/microcontroller/allwinner/h618/pin.py

index 7eabaa27bd3d2a0481d0e92908aa703b1cf93a86..cf7b4798dc40a74e3d62d481579196040cf237c5 100644 (file)
@@ -4,12 +4,28 @@
 """Allwinner H618 Pin Names"""
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
-# gpiochip select
-__chip_num = 0
-with open("/sys/class/gpio/gpiochip0/label", "r") as f:
-    label = f.read().strip()
-    if label == "300b000.pinctrl":
-        __chip_num = 1
+def find_gpiochip_number(target_label):
+    try:
+        with open('/sys/kernel/debug/gpio', 'r') as f:
+            lines = f.readlines()
+    except FileNotFoundError:
+        print("The file /sys/kernel/debug/gpio does not exist.")
+        return None
+
+    gpiochip_number = None
+    for line in lines:
+        if target_label in line:
+            parts = line.split()
+            for part in parts:
+                if part.startswith('gpiochip'):
+                    gpiochip_number = part[len('gpiochip'):]
+                    break
+            break
+
+    return gpiochip_number
+
+__chip_num = 1
+__chip_num = gpiochip_number = find_gpiochip_number("300b000.pinctrl")
 
 PC0 = Pin((__chip_num, 64))
 SPI0_SCLK = PC0