"""
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
# 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),
]
+# SysFS analog inputs, Ordered as analog analogInId, device, and channel
+analogIns = []
+
board = detector.board.id
if board in ("ODROID_C4", "ODROID_N2"):
alias = get_dts_alias("ffd1d000.i2c")
if alias is not None:
globals()[alias + "_SCL"] = GPIOX_18
globals()[alias + "_SDA"] = GPIOX_17
- i2cPorts.append((int(alias[3]), GPIOX_18, GPIOX_17))
+ i2cPorts.append((int(alias[-1]), GPIOX_18, GPIOX_17))
alias = get_dts_alias("ffd1c000.i2c")
if alias is not None:
globals()[alias + "_SCL"] = GPIOA_15
globals()[alias + "_SDA"] = GPIOA_14
- i2cPorts.append((int(alias[3]), GPIOA_15, GPIOA_14))
- alias = get_dts_alias("fdd24000.serial")
+ i2cPorts.append((int(alias[-1]), GPIOA_15, GPIOA_14))
+ 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[3]), GPIOX_12, GPIOX_13))
- alias = get_dts_alias("fdd23000.serial")
+ uartPorts.append((int(alias[-1]), GPIOX_12, GPIOX_13))
+ 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[3]), GPIOX_6, 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)