[PATCH] Fix IMX PWM period setting

Krebs, Olaf Olaf.Krebs at emh-metering.com
Thu Oct 30 01:51:20 PDT 2025


From: Olaf krebs <olaf.krebs at emh-metering.com>

We use 3 PWM channels to control an RGB LED. Without this patch we get an error:

[    7.395326] leds_pwm_multicolor led-controller: error -EBUSY: failed to set led PWM value for (null)
[    7.405167] leds_pwm_multicolor led-controller: probe with driver leds_pwm_multicolor failed with error -16

Our DTS-Config for an imx93-Board:
	...
	led-controller {
		compatible = "pwm-leds-multicolor";
		multi-led {
			label = "RGBled";
			color = <LED_COLOR_ID_RGB>;
			function = LED_FUNCTION_INDICATOR;
			max-brightness = <255>;
			led-red {
				pwms = <&tpm5 0 1000000 PWM_POLARITY_INVERTED>;
				color = <LED_COLOR_ID_RED>;
			};
			led-green {
				pwms = <&tpm6 2 1000000 PWM_POLARITY_INVERTED>;
				color = <LED_COLOR_ID_GREEN>;
			};
			led-blue {
				pwms = <&tpm5 1 1000000 PWM_POLARITY_INVERTED>;
				color = <LED_COLOR_ID_BLUE>;
			};
		};
	};
	...

Signed-off-by: Olaf krebs <olaf.krebs at emh-metering.com>
---
 drivers/pwm/pwm-imx-tpm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c index 5b399de16d60..82db43f56da8 100644
--- a/drivers/pwm/pwm-imx-tpm.c
+++ b/drivers/pwm/pwm-imx-tpm.c
@@ -190,7 +190,7 @@ static int pwm_imx_tpm_apply_hw(struct pwm_chip *chip,
 		 * there are multiple channels in use with different
 		 * period settings.
 		 */
-		if (tpm->user_count > 1)
+		if ((tpm->user_count > 1) && (tmp->real_period != 0))
 			return -EBUSY;
 
 		val = readl(tpm->base + PWM_IMX_TPM_SC);
--
2.43.0





More information about the linux-arm-kernel mailing list