[PATCH v2] pwm: stm32: Always program polarity

Sean Nyekjaer posted 1 patch 1 month ago
drivers/pwm/pwm-stm32.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH v2] pwm: stm32: Always program polarity
Posted by Sean Nyekjaer 1 month ago
Commit 7346e7a058a2 ("pwm: stm32: Always do lazy disabling") triggered a
regression where PWM polarity changes could be ignored.

stm32_pwm_set_polarity() was skipped due to a mismatch between the
cached pwm->state.polarity and the actual hardware state, leaving the
hardware polarity unchanged.

Fixes: 7edf7369205b ("pwm: Add driver for STM32 plaftorm")
Cc: stable@vger.kernel.org # <= 6.12
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Co-developed-by: Uwe Kleine-König <ukleinek@kernel.org>
---
This patch is only applicable for stable tree's <= 6.12
---
Changes in v2:
- Taken patch improvements for Uwe
- Link to v1: https://lore.kernel.org/r/20260106-stm32-pwm-v1-1-33e9e8a9fc33@geanix.com
---
 drivers/pwm/pwm-stm32.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/pwm/pwm-stm32.c b/drivers/pwm/pwm-stm32.c
index eb24054f9729734da21eb96f2e37af03339e3440..86e6eb7396f67990249509dd347cb5a60c9ccf16 100644
--- a/drivers/pwm/pwm-stm32.c
+++ b/drivers/pwm/pwm-stm32.c
@@ -458,8 +458,7 @@ static int stm32_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
 		return 0;
 	}
 
-	if (state->polarity != pwm->state.polarity)
-		stm32_pwm_set_polarity(priv, pwm->hwpwm, state->polarity);
+	stm32_pwm_set_polarity(priv, pwm->hwpwm, state->polarity);
 
 	ret = stm32_pwm_config(priv, pwm->hwpwm,
 			       state->duty_cycle, state->period);

---
base-commit: eb18504ca5cf1e6a76a752b73daf0ef51de3551b
change-id: 20260105-stm32-pwm-91cb843680f4

Best regards,
-- 
Sean Nyekjaer <sean@geanix.com>

Re: [PATCH v2] pwm: stm32: Always program polarity
Posted by Uwe Kleine-König 1 month ago
Hello Greg,

On Thu, Jan 08, 2026 at 01:45:23PM +0100, Sean Nyekjaer wrote:
> Commit 7346e7a058a2 ("pwm: stm32: Always do lazy disabling") triggered a
> regression where PWM polarity changes could be ignored.
> 
> stm32_pwm_set_polarity() was skipped due to a mismatch between the
> cached pwm->state.polarity and the actual hardware state, leaving the
> hardware polarity unchanged.
> 
> Fixes: 7edf7369205b ("pwm: Add driver for STM32 plaftorm")
> Cc: stable@vger.kernel.org # <= 6.12
> Signed-off-by: Sean Nyekjaer <sean@geanix.com>
> Co-developed-by: Uwe Kleine-König <ukleinek@kernel.org>
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>

> ---
> This patch is only applicable for stable tree's <= 6.12

Can you please apply this patch to v6.12.x and older? The problem fixed
here doesn't happen in mainline since commit deaba9cff809 ("pwm: stm32:
Implementation of the waveform callbacks"). That mainline commit however
is too intrusive to backport it to stable, not even considering its
dependencies (e.g. 17e40c25158f ("pwm: New abstraction for PWM
waveforms")). 

I assume such an exception to the sable process is ok and the patch is
simple enough to be easily reviewable? If not, tell me, then I can apply
the patch and merge it (with `-s ours`) into my next PWM pull request to
Linus :-)

Best regards
Uwe