.../devicetree/bindings/pwm/qcom,ipq6018-pwm.yaml | 51 +++++ arch/arm64/boot/dts/qcom/ipq5018.dtsi | 10 + arch/arm64/boot/dts/qcom/ipq5332.dtsi | 10 + arch/arm64/boot/dts/qcom/ipq6018.dtsi | 10 + arch/arm64/boot/dts/qcom/ipq9574.dtsi | 10 + drivers/pwm/Kconfig | 12 ++ drivers/pwm/Makefile | 1 + drivers/pwm/pwm-ipq.c | 214 +++++++++++++++++++++ 8 files changed, 318 insertions(+)
Add PWM driver and binding support for IPQ chipsets.
Also, add nodes to add support for pwm in ipq6018, ipq5018, ipq5332, and
ipq9574.
I've picked up work based on Devi's last submission (v15) which dates
back to 05 October 2023 as below SoCs are still active.
V16:
Removed reg description in bindings as the offset is not relative to
the TCSR region anymore since simple-mfd support was dropped and PWM
nodes defined as their own nodes, not child nodes. Updated the example
too.
Dropped patch to add simple-mfd support to the qcom,tcsr bindings
Simplified code to calculate divs and duty cycle as per Uwe's comments
Removed unused pwm_chip struct from ipq_pwm_chip struct
Removed unnecessary cast as per Uwe's comment
Replaced devm_clk_get & clk_prepare_enable by devm_clk_get_enabled
Replaced pwmchip_add by devm_pwmchip_add and removed .remove function
Removed .owner from driver struct
Added compatibles to the bindings and nodes to the device trees to add
PWM support PWM in the IPQ5018, IPQ5332, and IPQ9574 SoCs
v15:
No change
v14:
Picked up the R-b tag
v13:
Updated the file name to match the compatible
Sorted the properties and updated the order in the required field
Dropped the syscon node from examples
v12:
Picked up the R-b tag
v11:
No change
v10:
No change
v9:
Add 'ranges' property to example (Rob)
Drop label in example (Rob)
v8:
Add size cell to 'reg' (Rob)
v7:
Use 'reg' instead of 'offset' (Rob)
Drop 'clock-names' and 'assigned-clock*' (Bjorn)
Use single cell address/size in example node (Bjorn)
Move '#pwm-cells' lower in example node (Bjorn)
List 'reg' as required
v6:
Device node is child of TCSR; remove phandle (Rob Herring)
Add assigned-clocks/assigned-clock-rates (Uwe Kleine-König)
v5: Use qcom,pwm-regs for phandle instead of direct regs (Bjorn
Andersson, Kathiravan T)
v4: Update the binding example node as well (Rob Herring's bot)
v3: s/qcom,pwm-ipq6018/qcom,ipq6018-pwm/ (Rob Herring)
v2: Make #pwm-cells const (Rob Herring)
V15:
Detailed Change logs are added to the respective patches.
V14 can be found at:
https://lore.kernel.org/linux-arm-msm/20231005043127.2690639-1-quic_devipriy@quicinc.com/
Devi Priya (4):
pwm: driver for qualcomm ipq6018 pwm block
dt-bindings: pwm: add IPQ6018 binding
dt-bindings: mfd: qcom,tcsr: Add simple-mfd support for IPQ6018
arm64: dts: qcom: ipq6018: add pwm node
.../devicetree/bindings/mfd/qcom,tcsr.yaml | 112 +++++--
.../bindings/pwm/qcom,ipq6018-pwm.yaml | 45 +++
arch/arm64/boot/dts/qcom/ipq6018.dtsi | 15 +-
drivers/pwm/Kconfig | 12 +
drivers/pwm/Makefile | 1 +
drivers/pwm/pwm-ipq.c | 282 ++++++++++++++++++
6 files changed, 435 insertions(+), 32 deletions(-)
create mode 100644 Documentation/devicetree/bindings/pwm/qcom,ipq6018-pwm.yaml
create mode 100644 drivers/pwm/pwm-ipq.c
--
2.34.1
---
Devi Priya (3):
dt-bindings: pwm: add IPQ6018 binding
pwm: driver for qualcomm ipq6018 pwm block
arm64: dts: qcom: ipq6018: add pwm node
George Moussalem (6):
dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq5018
dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq5332
dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq9574
arm64: dts: qcom: ipq5018: add pwm node
arm64: dts: qcom: ipq5332: add pwm node
arm64: dts: qcom: ipq9574: add pwm node
.../devicetree/bindings/pwm/qcom,ipq6018-pwm.yaml | 51 +++++
arch/arm64/boot/dts/qcom/ipq5018.dtsi | 10 +
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 10 +
arch/arm64/boot/dts/qcom/ipq6018.dtsi | 10 +
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 10 +
drivers/pwm/Kconfig | 12 ++
drivers/pwm/Makefile | 1 +
drivers/pwm/pwm-ipq.c | 214 +++++++++++++++++++++
8 files changed, 318 insertions(+)
---
base-commit: 846bd2225ec3cfa8be046655e02b9457ed41973e
change-id: 20250922-ipq-pwm-c8c75c147d52
Best regards,
--
George Moussalem <george.moussalem@outlook.com>
On 10/1/2025 7:34 PM, George Moussalem via B4 Relay wrote: > Add PWM driver and binding support for IPQ chipsets. > Also, add nodes to add support for pwm in ipq6018, ipq5018, ipq5332, and > ipq9574. > > I've picked up work based on Devi's last submission (v15) which dates > back to 05 October 2023 as below SoCs are still active. > > V16: > > Removed reg description in bindings as the offset is not relative to > the TCSR region anymore since simple-mfd support was dropped and PWM > nodes defined as their own nodes, not child nodes. Updated the example > too. > > Dropped patch to add simple-mfd support to the qcom,tcsr bindings George, thanks for taking up this series. Can you elaborate on why the qcom,tcsr binding change is dropped and made the PWM as an independent node? IIUC, it should be child of TCSR node. In V15, I see the qcom,tcsr binding is applied and *dropped only* due to dependencies / lack of information on the "pwm-cells" property. Thanks, Kathiravan T.
On Wed, 01 Oct 2025 18:04:16 +0400, George Moussalem wrote: > Add PWM driver and binding support for IPQ chipsets. > Also, add nodes to add support for pwm in ipq6018, ipq5018, ipq5332, and > ipq9574. > > I've picked up work based on Devi's last submission (v15) which dates > back to 05 October 2023 as below SoCs are still active. > > V16: > > Removed reg description in bindings as the offset is not relative to > the TCSR region anymore since simple-mfd support was dropped and PWM > nodes defined as their own nodes, not child nodes. Updated the example > too. > > Dropped patch to add simple-mfd support to the qcom,tcsr bindings > > Simplified code to calculate divs and duty cycle as per Uwe's comments > > Removed unused pwm_chip struct from ipq_pwm_chip struct > > Removed unnecessary cast as per Uwe's comment > > Replaced devm_clk_get & clk_prepare_enable by devm_clk_get_enabled > > Replaced pwmchip_add by devm_pwmchip_add and removed .remove function > > Removed .owner from driver struct > > Added compatibles to the bindings and nodes to the device trees to add > PWM support PWM in the IPQ5018, IPQ5332, and IPQ9574 SoCs > > v15: > > No change > > v14: > > Picked up the R-b tag > > v13: > > Updated the file name to match the compatible > > Sorted the properties and updated the order in the required field > > Dropped the syscon node from examples > > v12: > > Picked up the R-b tag > > v11: > > No change > > v10: > > No change > > v9: > > Add 'ranges' property to example (Rob) > > Drop label in example (Rob) > > v8: > > Add size cell to 'reg' (Rob) > > v7: > > Use 'reg' instead of 'offset' (Rob) > > Drop 'clock-names' and 'assigned-clock*' (Bjorn) > > Use single cell address/size in example node (Bjorn) > > Move '#pwm-cells' lower in example node (Bjorn) > > List 'reg' as required > > v6: > > Device node is child of TCSR; remove phandle (Rob Herring) > > Add assigned-clocks/assigned-clock-rates (Uwe Kleine-König) > > v5: Use qcom,pwm-regs for phandle instead of direct regs (Bjorn > Andersson, Kathiravan T) > > v4: Update the binding example node as well (Rob Herring's bot) > > v3: s/qcom,pwm-ipq6018/qcom,ipq6018-pwm/ (Rob Herring) > > v2: Make #pwm-cells const (Rob Herring) > > V15: > Detailed Change logs are added to the respective patches. > > V14 can be found at: > https://lore.kernel.org/linux-arm-msm/20231005043127.2690639-1-quic_devipriy@quicinc.com/ > > Devi Priya (4): > pwm: driver for qualcomm ipq6018 pwm block > dt-bindings: pwm: add IPQ6018 binding > dt-bindings: mfd: qcom,tcsr: Add simple-mfd support for IPQ6018 > arm64: dts: qcom: ipq6018: add pwm node > > .../devicetree/bindings/mfd/qcom,tcsr.yaml | 112 +++++-- > .../bindings/pwm/qcom,ipq6018-pwm.yaml | 45 +++ > arch/arm64/boot/dts/qcom/ipq6018.dtsi | 15 +- > drivers/pwm/Kconfig | 12 + > drivers/pwm/Makefile | 1 + > drivers/pwm/pwm-ipq.c | 282 ++++++++++++++++++ > 6 files changed, 435 insertions(+), 32 deletions(-) > create mode 100644 Documentation/devicetree/bindings/pwm/qcom,ipq6018-pwm.yaml > create mode 100644 drivers/pwm/pwm-ipq.c > > -- > 2.34.1 > > --- > Devi Priya (3): > dt-bindings: pwm: add IPQ6018 binding > pwm: driver for qualcomm ipq6018 pwm block > arm64: dts: qcom: ipq6018: add pwm node > > George Moussalem (6): > dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq5018 > dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq5332 > dt-bindings: pwm: qcom,ipq6018-pwm: Add compatible for ipq9574 > arm64: dts: qcom: ipq5018: add pwm node > arm64: dts: qcom: ipq5332: add pwm node > arm64: dts: qcom: ipq9574: add pwm node > > .../devicetree/bindings/pwm/qcom,ipq6018-pwm.yaml | 51 +++++ > arch/arm64/boot/dts/qcom/ipq5018.dtsi | 10 + > arch/arm64/boot/dts/qcom/ipq5332.dtsi | 10 + > arch/arm64/boot/dts/qcom/ipq6018.dtsi | 10 + > arch/arm64/boot/dts/qcom/ipq9574.dtsi | 10 + > drivers/pwm/Kconfig | 12 ++ > drivers/pwm/Makefile | 1 + > drivers/pwm/pwm-ipq.c | 214 +++++++++++++++++++++ > 8 files changed, 318 insertions(+) > --- > base-commit: 846bd2225ec3cfa8be046655e02b9457ed41973e > change-id: 20250922-ipq-pwm-c8c75c147d52 > > Best regards, > -- > George Moussalem <george.moussalem@outlook.com> > > > My bot found new DTB warnings on the .dts files added or changed in this series. Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings are fixed by another series. Ultimately, it is up to the platform maintainer whether these warnings are acceptable or not. No need to reply unless the platform maintainer has comments. If you already ran DT checks and didn't see these error(s), then make sure dt-schema is up to date: pip3 install dtschema --upgrade This patch series was applied (using b4) to base: Base: using specified base-commit 846bd2225ec3cfa8be046655e02b9457ed41973e If this is not the correct base, please add 'base-commit' tag (or use b4 which does this automatically) New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/qcom/' for 20251001-ipq-pwm-v16-0-300f237e0e68@outlook.com: arch/arm64/boot/dts/qcom/ipq6018.dtsi:418.4-28: Warning (reg_format): /soc@0/pwm@1941010:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 2) arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format' arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format' arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format' arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format' arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dtb: soc@0 (simple-bus): pwm@1941010:reg:0: [26480656, 32] is too short from schema $id: http://devicetree.org/schemas/reg.yaml#
© 2016 - 2026 Red Hat, Inc.