From: Steve Jeong Date: Tue, 28 Nov 2023 02:14:44 +0000 (+0000) Subject: ODROID-COMMON: Support pwm X-Git-Tag: 8.28.0~4^2~1 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/179719d1f0141ec8e033b52327070533e1224089 ODROID-COMMON: Support pwm Signed-off-by: Steve Jeong --- diff --git a/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py b/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py index 9fae71c..cda852d 100644 --- a/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py +++ b/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py @@ -7,6 +7,7 @@ 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)) @@ -167,10 +168,10 @@ spiPorts = [ ] # SysFS pwm outputs, pwm channel and pin in first tuple -pwmOuts = ( +pwmOuts = [ ((0, 0), PWM0), ((0, 0), PWM1), -) +] 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)) + 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 @@ -202,5 +215,6 @@ if board in ("ODROID_M1S"): uartPorts.append((int(alias[3]), GPIO2_A4, GPIO2_A3)) i2cPorts = tuple(i2cPorts) +pwmOuts = tuple(pwmOuts) spiPorts = tuple(spiPorts) uartPorts = tuple(uartPorts) diff --git a/src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py b/src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py index ee928ef..d7abb83 100644 --- a/src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py +++ b/src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py @@ -7,6 +7,7 @@ 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)) @@ -71,6 +72,9 @@ i2cPorts = [ # 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 = [] @@ -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)) + 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 @@ -100,4 +116,5 @@ if board in ("ODROID_M1"): i2cPorts = tuple(i2cPorts) +pwmOuts = tuple(pwmOuts) uartPorts = tuple(uartPorts) diff --git a/src/pulseio.py b/src/pulseio.py index c6aa49e..a454613 100644 --- a/src/pulseio.py +++ b/src/pulseio.py @@ -21,8 +21,9 @@ if detector.board.any_raspberry_pi: 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.") diff --git a/src/pwmio.py b/src/pwmio.py index 9ded9fd..397120b 100644 --- a/src/pwmio.py +++ b/src/pwmio.py @@ -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 +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: