[PATCH v4 0/3] pwm: loongson: Fix PWM configuration handling

From: Keguang Zhang via B4 Relay

Date: Sun Sep 20 2026 - 08:07:43 EST


This series fixes two issues in the Loongson PWM driver:

- Fix the handling of the Low Pulse Buffer Register, which was
incorrectly treated as a duty-cycle register.

- Reset the PWM counters before enabling to ensure that
the PWM starts from a known state.

It also includes a follow-up rework:

- Use field helpers for period validation.

The whole patchset was verified on LS1B, LS1C, and LS2K0300 boards.

Signed-off-by: Keguang Zhang <keguang.zhang@xxxxxxxxx>
---
Changes in v4:
- Split the period validation rework into a separate patch from the
functional fixes.
- Limit the duty cycle to the period before calculating the low pulse.
- Add a fix to reset the PWM counters before enabling, as suggested by
Uwe Kleine-König.
- Drop v3 patch 2/3 (0de9b836a3bc), which has already been applied to
pwm/for-next.
- Link to v3: https://lore.kernel.org/r/20260715-pwm-loongson-fix-v3-0-0aab2847eaa7@xxxxxxxxx

Changes in v3:
- Calculate the low pulse as period - duty after rounding the duty cycle.
- Handle LOW > PERIOD in pwm_loongson_get_state().
- Add a Fixes tag to the second patch.
- Link to v2: https://lore.kernel.org/r/20260626-pwm-loongson-fix-v2-0-5492db953879@xxxxxxxxx

Changes in v2:
- Drop the -ERANGE return change and restore the original behavior.
- Use mul_u64_u64_div_u64_roundup() to calculate the low pulse width.
- Update the commit message accordingly.
- Link to v1: https://lore.kernel.org/r/20260616-pwm-loongson-fix-v1-0-491dbf260a7f@xxxxxxxxx

---
Keguang Zhang (3):
pwm: loongson: Fix low pulse buffer register handling
pwm: loongson: Reset the counters before enabling PWM
pwm: loongson: Use field helpers for period validation

drivers/pwm/pwm-loongson.c | 44 ++++++++++++++++++++++++++++++--------------
1 file changed, 30 insertions(+), 14 deletions(-)
---
base-commit: 17dbb6938d3ab444cd6be1c95506450595a8800d
change-id: 20260612-pwm-loongson-fix-183763451e93

Best regards,
--
Keguang Zhang <keguang.zhang@xxxxxxxxx>