From dfd1bf6738ac3b6b51b0c350eb3981a32af60bc0 Mon Sep 17 00:00:00 2001 From: Royyan Zahir Date: Thu, 1 Oct 2026 07:18:13 +0400 Subject: [PATCH] arch/arm64/imx9: skip unused PWM channel slots A channel number of zero marks an unused slot, as pwm.rst documents. pwm_start() handed every slot to pwm_update_duty(), which refuses channel 0, so a caller that fills only some slots, like PX4's tone alarm, got EINVAL. Signed-off-by: Royyan Zahir --- arch/arm64/src/imx9/imx9_flexio_pwm.c | 5 +++++ arch/arm64/src/imx9/imx9_tpm_pwm.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/arch/arm64/src/imx9/imx9_flexio_pwm.c b/arch/arm64/src/imx9/imx9_flexio_pwm.c index be123a464d1..4d05a15b115 100644 --- a/arch/arm64/src/imx9/imx9_flexio_pwm.c +++ b/arch/arm64/src/imx9/imx9_flexio_pwm.c @@ -602,6 +602,11 @@ static int pwm_start(struct pwm_lowerhalf_s *dev, break; } + if (info->channels[i].channel == 0) + { + continue; + } + ret = pwm_update_duty(priv, info->channels[i].channel, info->channels[i].duty); } diff --git a/arch/arm64/src/imx9/imx9_tpm_pwm.c b/arch/arm64/src/imx9/imx9_tpm_pwm.c index bfc7884d92d..35a639f9225 100644 --- a/arch/arm64/src/imx9/imx9_tpm_pwm.c +++ b/arch/arm64/src/imx9/imx9_tpm_pwm.c @@ -541,6 +541,11 @@ static int pwm_start(struct pwm_lowerhalf_s *dev, break; } + if (info->channels[i].channel == 0) + { + continue; + } + ret = pwm_update_duty(priv, info->channels[i].channel, info->channels[i].duty); }