| Message ID | 20251027-rk3576-pwm-v3-1-654a5cb1e3f8@collabora.com |
|---|---|
| State | Changes Requested |
| Headers | show |
| Series | Add Rockchip RK3576 PWM Support Through MFPWM | expand |
Hi Nicolas, On 10/28/2025 1:11 AM, Nicolas Frattaroli wrote: > The Rockchip RK3576 SoC has a newer PWM controller IP revision than > previous Rockchip SoCs. This IP, called "PWMv4" by Rockchip, introduces > several new features, and consequently differs in its bindings. > > Instead of expanding the ever-growing rockchip-pwm binding that already > has an if-condition, add an entirely new binding to handle this. > > There are two additional clocks, "osc" and "rc". These are available for > every PWM instance, and the PWM hardware can switch between the "pwm", > "osc" and "rc" clock at runtime. > > The PWM controller also comes with an interrupt now. This interrupt is > used to signal various conditions. > > Reviewed-by: Conor Dooley <conor.dooley@microchip.com> > Reviewed-by: Rob Herring (Arm) <robh@kernel.org> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> > --- > .../bindings/pwm/rockchip,rk3576-pwm.yaml | 77 ++++++++++++++++++++++ > MAINTAINERS | 7 ++ > 2 files changed, 84 insertions(+) > > diff --git a/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml b/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml > new file mode 100644 > index 000000000000..48d5055c8b06 > --- /dev/null > +++ b/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml > @@ -0,0 +1,77 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/pwm/rockchip,rk3576-pwm.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Rockchip PWMv4 controller > + > +maintainers: > + - Nicolas Frattaroli <nicolas.frattaroli@collabora.com> > + > +description: | > + The Rockchip PWMv4 controller is a PWM controller found on several Rockchip > + SoCs, such as the RK3576. > + > + It supports both generating and capturing PWM signals. > + > +allOf: > + - $ref: pwm.yaml# > + > +properties: > + compatible: > + items: > + - const: rockchip,rk3576-pwm > + > + reg: > + maxItems: 1 > + > + clocks: > + items: > + - description: Used to derive the PWM signal. > + - description: Used as the APB bus clock. > + - description: Used as an alternative to derive the PWM signal. > + - description: Used as another alternative to derive the PWM signal. > + > + clock-names: > + items: > + - const: pwm > + - const: pclk > + - const: osc > + - const: rc > + > + interrupts: > + maxItems: 1 > + > + "#pwm-cells": > + const: 3 > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - interrupts > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/rockchip,rk3576-cru.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + > + soc { > + #address-cells = <2>; > + #size-cells = <2>; > + > + pwm@2add0000 { > + compatible = "rockchip,rk3576-pwm"; > + reg = <0x0 0x2add0000 0x0 0x1000>; > + clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>, <&cru CLK_OSC_PWM1>, > + <&cru CLK_RC_PWM1>; > + clock-names = "pwm", "pclk", "osc", "rc"; > + interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; > + #pwm-cells = <3>; > + }; > + }; > diff --git a/MAINTAINERS b/MAINTAINERS > index 252b06d4240c..baecabab35a2 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -22366,6 +22366,13 @@ F: Documentation/userspace-api/media/v4l/metafmt-rkisp1.rst > F: drivers/media/platform/rockchip/rkisp1 > F: include/uapi/linux/rkisp1-config.h > > +ROCKCHIP MFPWM > +M: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> > +L: linux-rockchip@lists.infradead.org > +L: linux-pwm@vger.kernel.org > +S: Maintained > +F: Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml > + > ROCKCHIP RK3568 RANDOM NUMBER GENERATOR SUPPORT > M: Daniel Golle <daniel@makrotopia.org> > M: Aurelien Jarno <aurelien@aurel32.net> > The RK3506 and RV1126B platforms that are about to be upstream also use this PWM IP. Would it be better to name the yaml file "pwm-rockchip-v4.yaml"? Then subsequent platforms only need to expand the compatible property. Best regards, Damon
On Tue, Oct 28, 2025 at 11:06:15AM +0800, Damon Ding wrote: > On 10/28/2025 1:11 AM, Nicolas Frattaroli wrote: > The RK3506 and RV1126B platforms that are about to be upstream also use this > PWM IP. Would it be better to name the yaml file "pwm-rockchip-v4.yaml"? No. Files should be named to match a compatibles. > Then subsequent platforms only need to expand the compatible property. That's all subsequent platforms need to do anyway!
Hi Conor, On 10/28/2025 4:50 PM, Conor Dooley wrote: > On Tue, Oct 28, 2025 at 11:06:15AM +0800, Damon Ding wrote: >> On 10/28/2025 1:11 AM, Nicolas Frattaroli wrote: > >> The RK3506 and RV1126B platforms that are about to be upstream also use this >> PWM IP. Would it be better to name the yaml file "pwm-rockchip-v4.yaml"? > > No. Files should be named to match a compatibles. > >> Then subsequent platforms only need to expand the compatible property. > > That's all subsequent platforms need to do anyway! Got it. Best regards, Damon
diff --git a/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml b/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml new file mode 100644 index 000000000000..48d5055c8b06 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml @@ -0,0 +1,77 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pwm/rockchip,rk3576-pwm.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Rockchip PWMv4 controller + +maintainers: + - Nicolas Frattaroli <nicolas.frattaroli@collabora.com> + +description: | + The Rockchip PWMv4 controller is a PWM controller found on several Rockchip + SoCs, such as the RK3576. + + It supports both generating and capturing PWM signals. + +allOf: + - $ref: pwm.yaml# + +properties: + compatible: + items: + - const: rockchip,rk3576-pwm + + reg: + maxItems: 1 + + clocks: + items: + - description: Used to derive the PWM signal. + - description: Used as the APB bus clock. + - description: Used as an alternative to derive the PWM signal. + - description: Used as another alternative to derive the PWM signal. + + clock-names: + items: + - const: pwm + - const: pclk + - const: osc + - const: rc + + interrupts: + maxItems: 1 + + "#pwm-cells": + const: 3 + +required: + - compatible + - reg + - clocks + - clock-names + - interrupts + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/rockchip,rk3576-cru.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + pwm@2add0000 { + compatible = "rockchip,rk3576-pwm"; + reg = <0x0 0x2add0000 0x0 0x1000>; + clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>, <&cru CLK_OSC_PWM1>, + <&cru CLK_RC_PWM1>; + clock-names = "pwm", "pclk", "osc", "rc"; + interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; + #pwm-cells = <3>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 252b06d4240c..baecabab35a2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22366,6 +22366,13 @@ F: Documentation/userspace-api/media/v4l/metafmt-rkisp1.rst F: drivers/media/platform/rockchip/rkisp1 F: include/uapi/linux/rkisp1-config.h +ROCKCHIP MFPWM +M: Nicolas Frattaroli <nicolas.frattaroli@collabora.com> +L: linux-rockchip@lists.infradead.org +L: linux-pwm@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/pwm/rockchip,rk3576-pwm.yaml + ROCKCHIP RK3568 RANDOM NUMBER GENERATOR SUPPORT M: Daniel Golle <daniel@makrotopia.org> M: Aurelien Jarno <aurelien@aurel32.net>