X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/f3cf1b70552edcc205d694ce9814717be1c07679..HEAD:/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 f44f92a..ea01a8e 100644 --- a/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py +++ b/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py @@ -13,32 +13,15 @@ Linux kernel 5.4.y (mainline) """ from adafruit_blinka.agnostic import detector -from adafruit_blinka.microcontroller.alias import get_dts_alias +from adafruit_blinka.microcontroller.alias import get_dts_alias, get_pwm_chipid from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin +from adafruit_blinka.microcontroller.generic_linux.libgpiod_chip import Chip -try: - import gpiod -except ImportError: - raise ImportError( - "libgpiod Python bindings not found, please install and try again!" - ) from ImportError +chip0 = Chip("0") +chip1 = Chip("1") -if hasattr(gpiod, "Chip"): - chip0 = gpiod.Chip("0") - chip1 = gpiod.Chip("1") -else: - chip0 = gpiod.chip("0") - chip1 = gpiod.chip("1") - -if callable(chip0.num_lines): - chip0lines = chip0.num_lines() -else: - chip0lines = chip0.num_lines - -if callable(chip1.num_lines): - chip1lines = chip1.num_lines() -else: - chip1lines = chip1.num_lines +chip0lines = chip0.num_lines +chip1lines = chip1.num_lines if chip0lines < 20: aobus = 0 @@ -131,6 +114,9 @@ i2cPorts = [] # ordered as spiId, sckId, mosiId, misoId spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),) +# SysFs pwm outputs, pwm channel and pin in first tuple +pwmOuts = [] + # ordered as uartId, txId, rxId uartPorts = [ (1, UART1_TX, UART1_RX), @@ -151,24 +137,55 @@ if board in ("ODROID_C4", "ODROID_N2"): globals()[alias + "_SCL"] = GPIOA_15 globals()[alias + "_SDA"] = GPIOA_14 i2cPorts.append((int(alias[-1]), GPIOA_15, GPIOA_14)) - alias = get_dts_alias("fdd24000.serial") + alias = get_dts_alias("ffd24000.serial") if alias is not None: globals()[alias + "_TX"] = GPIOX_12 globals()[alias + "_RX"] = GPIOX_13 uartPorts.append((int(alias[-1]), GPIOX_12, GPIOX_13)) - alias = get_dts_alias("fdd23000.serial") + alias = get_dts_alias("ffd23000.serial") if alias is not None: globals()[alias + "_TX"] = GPIOX_6 globals()[alias + "_RX"] = GPIOX_7 uartPorts.append((int(alias[-1]), GPIOX_6, GPIOX_7)) if board in ("ODROID_C4"): + alias = get_pwm_chipid("ffd1b000.pwm") + if alias is not None: + globals()["PWMA"] = GPIOX_6 + globals()["PWMB"] = GPIOX_19 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_6)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_19)) + alias = get_pwm_chipid("ffd1a000.pwm") + if alias is not None: + globals()["PWMC"] = GPIOX_5 + globals()["PWMD"] = GPIOX_3 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_5)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_3)) + alias = get_pwm_chipid("ffd19000.pwm") + if alias is not None: + globals()["PWME"] = GPIOX_16 + globals()["PWMF"] = GPIOX_7 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_16)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_7)) analogIns.append((37, 0, 2)) analogIns.append((40, 0, 0)) if board in ("ODROID_N2"): + alias = get_pwm_chipid("ffd1a000.pwm") + if alias is not None: + globals()["PWMC"] = GPIOX_5 + globals()["PWMD"] = GPIOX_6 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_5)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_6)) + alias = get_pwm_chipid("ffd19000.pwm") + if alias is not None: + globals()["PWME"] = GPIOX_16 + globals()["PWMF"] = GPIOX_7 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_16)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_7)) analogIns.append((37, 0, 3)) analogIns.append((40, 0, 2)) analogIns = tuple(analogIns) i2cPorts = tuple(i2cPorts) +pwmOuts = tuple(pwmOuts) uartPorts = tuple(uartPorts)