]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py
Merge pull request #771 from mahenzon/feature/Fix-ODROID_M1-board-detection
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / amlogic / meson_g12_common / pin.py
index 42379650060d4786dd2b8c748f102b597b492290..c18e9d940aa974461cfca41f5918dfb5a086a7bb 100644 (file)
@@ -13,7 +13,7 @@ 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
 
 try:
@@ -131,8 +131,16 @@ 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),]
+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"):
@@ -140,22 +148,61 @@ if board in ("ODROID_C4", "ODROID_N2"):
     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"] = GPIOH_5
+        pwmOuts.append(((int(alias[-1]), 0), GPIOX_16))
+        pwmOuts.append(((int(alias[-1]), 1), GPIOH_5))
+    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)