X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/9e94212401114a95fa97462b787801302cf0c241..a052cf3c615a2aedb6598a1c4fa93f72ea6b6ab0:/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py diff --git a/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py b/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py index 31ff8e1..87f4571 100644 --- a/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py +++ b/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py @@ -11,25 +11,37 @@ Linux kernel 5.4.y (mainline) linux/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi """ +from typing import Optional import os import re -import gpiod + +try: + import gpiod +except ImportError: + raise ImportError( + "libgpiod Python bindings not found, please install and try again!" + ) from ImportError from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin -chip0 = gpiod.Chip("0") -chip1 = gpiod.Chip("1") +if hasattr(gpiod, "Chip"): + chip0 = gpiod.Chip("0") + chip1 = gpiod.Chip("1") +else: + chip0 = gpiod.chip("0") + chip1 = gpiod.chip("1") + -if chip0.num_lines() < 20: +if chip0.num_lines < 20: aobus = 0 periphs = 1 - periphs_offset = chip1.num_lines() - 85 + periphs_offset = chip1.num_lines - 85 else: aobus = 1 periphs = 0 - periphs_offset = chip0.num_lines() - 85 + periphs_offset = chip0.num_lines - 85 -chip0.close() -chip1.close() +del chip0 +del chip1 GPIOAO_0 = GPIO496 = Pin((aobus, 0)) GPIOAO_1 = GPIO497 = Pin((aobus, 1)) @@ -111,19 +123,18 @@ UART1_RX = GPIOX_13 uartPorts = ((1, UART1_TX, UART1_RX),) -def get_dts_alias(device: str) -> str: +def get_dts_alias(device: str) -> Optional[str]: """Get the Device Tree Alias""" uevent_path = "/sys/bus/platform/devices/" + device + "/uevent" if os.path.exists(uevent_path): - with open(uevent_path, "r", encoding="utf-8") as fd: - pattern = r"^OF_ALIAS_0=(.*)$" - uevent = fd.read().split("\n") - for line in uevent: - match = re.search(pattern, line) - if match: - return match.group(1).upper() - - return None + with open(uevent_path, "r", encoding="utf-8") as fd: + pattern = r"^OF_ALIAS_0=(.*)$" + uevent = fd.read().split("\n") + for line in uevent: + match = re.search(pattern, line) + if match: + return match.group(1).upper() + return None # ordered as i2cId, sclId, sdaId