From 2982747631256df8d29f689e814f0b5962d13c57 Mon Sep 17 00:00:00 2001 From: August <2819763+Dangku@users.noreply.github.com> Date: Mon, 2 Sep 2024 22:36:38 +0800 Subject: [PATCH] allwinner h618: support mainline gpiochip --- .../microcontroller/allwinner/h618/pin.py | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py b/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py index 7eabaa2..cf7b479 100644 --- a/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py +++ b/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py @@ -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 -- 2.49.0