]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py
ODROID-COMMON: Support aliased alt functions
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / rockchip / rk3568b2 / pin.py
index 0f1a01b67756faf8aeaee60d1560a0a03d5f849a..ee928eff5c699b4fc9b372499931a7fa4ad8e8db 100644 (file)
@@ -1,9 +1,12 @@
 # SPDX-FileCopyrightText: 2022 MrPanc0 for Adafruit Industries
+# SPDX-FileCopyrightText: 2023 Steve Jeong for Hardkernel
 #
 # SPDX-License-Identifier: MIT
 
 """A Pin class for use with Rockchip RK3568B2."""
 
+from adafruit_blinka.agnostic import detector
+from adafruit_blinka.microcontroller.alias import get_dts_alias
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
 GPIO3C_6 = Pin((3, 22))
@@ -35,17 +38,14 @@ ADC_AIN0 = 37
 ADC_AIN1 = 40
 
 # I2C
-I2C0_SCL = GPIO3B_5
-I2C0_SDA = GPIO3B_6
 I2C1_SCL = GPIO0B_3
 I2C1_SDA = GPIO0B_4
 
 # SPI
-SPI0_CS = GPIO2D_2
-SPI0_SCLK = GPIO2D_3
-SPI0_MISO = GPIO2D_0
-SPI0_MOSI = GPIO2D_1
-
+SPI0_CS_M1 = GPIO2D_2
+SPI0_SCLK_M1 = GPIO2D_3
+SPI0_MISO_M1 = GPIO2D_0
+SPI0_MOSI_M1 = GPIO2D_1
 
 # UART
 UART0_TX = GPIO0C_1
@@ -58,13 +58,9 @@ UART1_RX = GPIO3D_7
 # PWM1 = GPIO4_C6
 
 # ordered as i2cId, SCL, SDA
-i2cPorts = (
-    (0, I2C0_SCL, I2C0_SDA),
+i2cPorts = [
     (1, I2C1_SCL, I2C1_SDA),
-)
-
-# ordered as spiId, sckId, mosiId, misoId
-spiPorts = ((1, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),)
+]
 
 # SysFS pwm outputs, pwm channel and pin in first tuple
 # pwmOuts = (
@@ -72,8 +68,36 @@ spiPorts = ((1, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),)
 #   ((1, 0), PWM1),
 # )
 
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = ((0, SPI0_SCLK_M1, SPI0_MOSI_M1, SPI0_MISO_M1),)
+
+# ordered as uartId, txId, rxId
+uartPorts = []
+
 # SysFS analog inputs, Ordered as analog analogInId, device, and channel
 analogIns = (
     (ADC_AIN0, 0, 0),
     (ADC_AIN1, 0, 0),
 )
+
+board = detector.board.id
+if board in ("ODROID_M1"):
+    alias = get_dts_alias("fe5c0000.i2c")
+    if alias is not None:
+        globals()[alias + "_SCL"] = GPIO3B_5
+        globals()[alias + "_SDA"] = GPIO3B_6
+        i2cPorts.append((int(alias[3]), GPIO3B_5, GPIO3B_6))
+    alias = get_dts_alias("fdd50000.serial")
+    if alias is not None:
+        globals()[alias + "_TX"] = GPIO0C_1
+        globals()[alias + "_RX"] = GPIO0C_0
+        uartPorts.append((int(alias[3]), GPIO0C_1, GPIO0C_0))
+    alias = get_dts_alias("fe650000.serial")
+    if alias is not None:
+        globals()[alias + "_TX"] = GPIO3D_6
+        globals()[alias + "_RX"] = GPIO3D_7
+        uartPorts.append((int(alias[3]), GPIO3D_6, GPIO3D_7))
+
+
+i2cPorts = tuple(i2cPorts)
+uartPorts = tuple(uartPorts)