Hi all: This patchset introduce a generic PWM framework driver for Loongson family. Each PWM has one pulse width output signal and one pulse input signal to be measured. It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips. Thanks. ------- V7: Thanks for Sean's advice. patch (2/2): - Set chip->atomic to keep pwm_apply_atomic() can be used with the pwm. - Test with CONFIG_PWM_DEBUG and CONFIG_DEBUG_ATOMIC_SLEEP enabled. Link to V6: https://lore.kernel.org/all/cover.1728463622.git.zhoubinbin@xxxxxxxxxxx/ V6: patch (2/2): - Rebase on pwm/for-next; - Add Reference Manual; - Shortcut if !pwm->state.enabled; - When state->enabled is true, unconditionally execute pwm_loongson_set_polarity() to avoid that the polarity register is not set correctly. Link to V5: https://lore.kernel.org/all/cover.1720516327.git.zhoubinbin@xxxxxxxxxxx/ V5: patch (2/2): - Rebase on pwm/for-next; - Test with PWM_DEBUG enabled. - In pwm_loongson_apply(), the pwm state is determined before the pwm polarity, avoid test failures when PWM_DEBUG is enabled; - Added DIV64_U64_ROUND_UP in pwm_loongson_get_state() to avoid precision loss and to avoid test failures when PWM_DEBUG is enabled. Link to V4: https://lore.kernel.org/all/cover.1716795485.git.zhoubinbin@xxxxxxxxxxx/ V4: patch (2/2): - Rebase on pwm/for-next; - Addressed Uwe's review comments: - Make use of devm_pwmchip_alloc() function; - Add Limitations description; - Add LOONGSON_ prefix for Loongson pwm register defines; - Keep regs written only once; - Rewrite duty/period calculation; - Add dev_err_probe() in .probe(); - Fix some code style. Link to V3: https://lore.kernel.org/linux-pwm/cover.1713164810.git.zhoubinbin@xxxxxxxxxxx/ V3: patch (1/2): - Add Reviewed-by tag from Krzysztof, thanks. patch (2/2): - Several code stlye adjustments, such as line breaks. Link to V2: https://lore.kernel.org/all/cover.1712732719.git.zhoubinbin@xxxxxxxxxxx/ v2: - Remove the dts-related patches and update dts at once after all relevant drivers are complete. patch (1/2): - The dt-binding filename should match compatible, rename it as loongson,ls7a-pwm.yaml; - Update binding description; - Add description for each pwm cell; - Drop '#pwm-cells' from required, for pwm.yaml makes it required already. Link to v1: https://lore.kernel.org/linux-pwm/cover.1711953223.git.zhoubinbin@xxxxxxxxxxx/ Binbin Zhou (2): dt-bindings: pwm: Add Loongson PWM controller pwm: Add Loongson PWM controller support .../bindings/pwm/loongson,ls7a-pwm.yaml | 66 ++++ MAINTAINERS | 7 + drivers/pwm/Kconfig | 12 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-loongson.c | 288 ++++++++++++++++++ 5 files changed, 374 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/loongson,ls7a-pwm.yaml create mode 100644 drivers/pwm/pwm-loongson.c base-commit: c13bce43b32b06f2273c7961940c391cdaf13d1e -- 2.43.5