-# 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):
+    """Get correct gpiochip number, legacy kernel and mainline kernel are different"""
+    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:
+            match = re.search(r"gpiochip(\d+)", line)
+            if match:
+                gpiochip_number = match.group(1)
+                break
+
+    return gpiochip_number
+
+
+if find_gpiochip_number("300b000.pinctrl"):
+    __chip_num = 1
+else:
+    __chip_num = 0