]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
ODROID-COMMON: Support pwm
authorSteve Jeong <steve@how2flow.net>
Tue, 28 Nov 2023 02:14:44 +0000 (02:14 +0000)
committerSteve Jeong <steve@how2flow.net>
Tue, 12 Dec 2023 03:14:40 +0000 (03:14 +0000)
Signed-off-by: Steve Jeong <steve@how2flow.net>
src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py
src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py
src/pulseio.py
src/pwmio.py

index 9fae71c14eb50fc848a85b8b70275fb0a75bea20..cda852db706bacf6f308a4f665bc6bc684cff736 100644 (file)
@@ -7,6 +7,7 @@
 
 from adafruit_blinka.agnostic import detector
 from adafruit_blinka.microcontroller.alias import get_dts_alias
 
 from adafruit_blinka.agnostic import detector
 from adafruit_blinka.microcontroller.alias import get_dts_alias
+from adafruit_blinka.microcontroller.alias import get_pwm_chipid
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
 GPIO0_A2 = Pin((0, 2))
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
 GPIO0_A2 = Pin((0, 2))
@@ -167,10 +168,10 @@ spiPorts = [
 ]
 
 # SysFS pwm outputs, pwm channel and pin in first tuple
 ]
 
 # SysFS pwm outputs, pwm channel and pin in first tuple
-pwmOuts = (
+pwmOuts = [
     ((0, 0), PWM0),
     ((0, 0), PWM1),
     ((0, 0), PWM0),
     ((0, 0), PWM1),
-)
+]
 
 uartPorts = []
 
 
 uartPorts = []
 
@@ -184,6 +185,18 @@ if board in ("ODROID_M1S"):
         globals()[alias + "_SCL"] = GPIO3_B5
         globals()[alias + "_SDA"] = GPIO3_B6
         i2cPorts.append((int(alias[3]), GPIO3_B5, GPIO3_B6))
         globals()[alias + "_SCL"] = GPIO3_B5
         globals()[alias + "_SDA"] = GPIO3_B6
         i2cPorts.append((int(alias[3]), GPIO3_B5, GPIO3_B6))
+    alias = get_pwm_chipid("fdd70010.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO0_C0
+        pwmOuts.append(((int(alias[3]), 0), GPIO0_C0))
+    alias = get_pwm_chipid("fdd70020.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO0_C1
+        pwmOuts.append(((int(alias[3]), 0), GPIO0_C1))
+    alias = get_pwm_chipid("fdd70030.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO0_C2
+        pwmOuts.append(((int(alias[3]), 0), GPIO0_C2))
     alias = get_dts_alias("fe620000.spi")
     if alias is not None:
         globals()[alias + "_CLK"] = GPIO3_C3
     alias = get_dts_alias("fe620000.spi")
     if alias is not None:
         globals()[alias + "_CLK"] = GPIO3_C3
@@ -202,5 +215,6 @@ if board in ("ODROID_M1S"):
         uartPorts.append((int(alias[3]), GPIO2_A4, GPIO2_A3))
 
 i2cPorts = tuple(i2cPorts)
         uartPorts.append((int(alias[3]), GPIO2_A4, GPIO2_A3))
 
 i2cPorts = tuple(i2cPorts)
+pwmOuts = tuple(pwmOuts)
 spiPorts = tuple(spiPorts)
 uartPorts = tuple(uartPorts)
 spiPorts = tuple(spiPorts)
 uartPorts = tuple(uartPorts)
index ee928eff5c699b4fc9b372499931a7fa4ad8e8db..d7abb834b23478b08457a178d0ed5ceb27fd9f88 100644 (file)
@@ -7,6 +7,7 @@
 
 from adafruit_blinka.agnostic import detector
 from adafruit_blinka.microcontroller.alias import get_dts_alias
 
 from adafruit_blinka.agnostic import detector
 from adafruit_blinka.microcontroller.alias import get_dts_alias
+from adafruit_blinka.microcontroller.alias import get_pwm_chipid
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
 GPIO3C_6 = Pin((3, 22))
 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
 
 GPIO3C_6 = Pin((3, 22))
@@ -71,6 +72,9 @@ i2cPorts = [
 # ordered as spiId, sckId, mosiId, misoId
 spiPorts = ((0, SPI0_SCLK_M1, SPI0_MOSI_M1, SPI0_MISO_M1),)
 
 # ordered as spiId, sckId, mosiId, misoId
 spiPorts = ((0, SPI0_SCLK_M1, SPI0_MOSI_M1, SPI0_MISO_M1),)
 
+# SysFS pwm outputs, pwm channel and pin in first tuple
+pwmOuts = []
+
 # ordered as uartId, txId, rxId
 uartPorts = []
 
 # ordered as uartId, txId, rxId
 uartPorts = []
 
@@ -87,6 +91,18 @@ if board in ("ODROID_M1"):
         globals()[alias + "_SCL"] = GPIO3B_5
         globals()[alias + "_SDA"] = GPIO3B_6
         i2cPorts.append((int(alias[3]), GPIO3B_5, GPIO3B_6))
         globals()[alias + "_SCL"] = GPIO3B_5
         globals()[alias + "_SDA"] = GPIO3B_6
         i2cPorts.append((int(alias[3]), GPIO3B_5, GPIO3B_6))
+    alias = get_pwm_chipid("fdd70010.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO0C_0
+        pwmOuts.append(((int(alias[3]), 0), GPIO0C_0))
+    alias = get_pwm_chipid("fdd70020.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO0C_1
+        pwmOuts.append(((int(alias[3]), 0), GPIO0C_1))
+    alias = get_pwm_chipid("fe6f0010.pwm")
+    if alias is not None:
+        globals()["PWM" + alias] = GPIO3B_2
+        pwmOuts.append(((int(alias[3]), 0), GPIO3B_2))
     alias = get_dts_alias("fdd50000.serial")
     if alias is not None:
         globals()[alias + "_TX"] = GPIO0C_1
     alias = get_dts_alias("fdd50000.serial")
     if alias is not None:
         globals()[alias + "_TX"] = GPIO0C_1
@@ -100,4 +116,5 @@ if board in ("ODROID_M1"):
 
 
 i2cPorts = tuple(i2cPorts)
 
 
 i2cPorts = tuple(i2cPorts)
+pwmOuts = tuple(pwmOuts)
 uartPorts = tuple(uartPorts)
 uartPorts = tuple(uartPorts)
index c6aa49e78e1023aee19185b89cff83f5758026ef..a45461339cea709f3cba6900941d176167988f02 100644 (file)
@@ -21,8 +21,9 @@ if detector.board.any_raspberry_pi:
 elif "sphinx" in sys.modules:
     pass
 elif detector.board.any_odroid_40_pin:
 elif "sphinx" in sys.modules:
     pass
 elif detector.board.any_odroid_40_pin:
-    from adafruit_blinka.microcontroller.amlogic.meson_g12_common.pulseio.PulseIn import (
-        PulseIn,
-    )
+    if detector.board.id in ("ODROID_C4", "ODROID_N2"):
+        from adafruit_blinka.microcontroller.amlogic.meson_g12_common.pulseio.PulseIn import (
+            PulseIn,
+        )
 else:
     raise NotImplementedError("pulseio not supported for this board.")
 else:
     raise NotImplementedError("pulseio not supported for this board.")
index 9ded9fd43faa956a746ae395037b8f6648d0a443..397120bb5fb6fcf36ac301506dc3eeb12259d972 100644 (file)
@@ -30,6 +30,8 @@ elif detector.board.any_lemaker:
     from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
 elif detector.board.any_siemens_simatic_iot2000:
     from adafruit_blinka.microcontroller.am65xx.pwmout import PWMOut
     from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
 elif detector.board.any_siemens_simatic_iot2000:
     from adafruit_blinka.microcontroller.am65xx.pwmout import PWMOut
+elif detector.board.any_odroid_40_pin:
+    from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut
 elif detector.board.any_rock_pi_board:
     from adafruit_blinka.microcontroller.rockchip.PWMOut import PWMOut
 elif detector.board.binho_nova:
 elif detector.board.any_rock_pi_board:
     from adafruit_blinka.microcontroller.rockchip.PWMOut import PWMOut
 elif detector.board.binho_nova: