Hi Biju, Thank you for the patch. On Thu, Aug 14, 2025 at 07:41:05PM +0100, Biju wrote: > From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > > Document support for the GPT found on the Renesas RZ/G3E (R9A09G047) > SoC. > > The GPT IP on these parts is similar to that on RZ/G2L but supports > only 8 interrupts per channel and has multiple clocks and resets. > Introduce a new compatible string `renesas,r9a09g047-gpt` for RZ/G3E. > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@xxxxxxxxxxxxxx> > --- > .../bindings/pwm/renesas,rzg2l-gpt.yaml | 525 ++++++++++++------ > 1 file changed, 356 insertions(+), 169 deletions(-) > > diff --git a/Documentation/devicetree/bindings/pwm/renesas,rzg2l-gpt.yaml b/Documentation/devicetree/bindings/pwm/renesas,rzg2l-gpt.yaml > index 13b807765a30..6250dbb200e7 100644 > --- a/Documentation/devicetree/bindings/pwm/renesas,rzg2l-gpt.yaml > +++ b/Documentation/devicetree/bindings/pwm/renesas,rzg2l-gpt.yaml > @@ -58,11 +58,14 @@ description: | > > properties: > compatible: > - items: > - - enum: > - - renesas,r9a07g044-gpt # RZ/G2{L,LC} > - - renesas,r9a07g054-gpt # RZ/V2L > - - const: renesas,rzg2l-gpt > + oneOf: > + - items: > + - enum: > + - renesas,r9a07g044-gpt # RZ/G2{L,LC} > + - renesas,r9a07g054-gpt # RZ/V2L > + - const: renesas,rzg2l-gpt > + > + - const: renesas,r9a09g047-gpt # RZ/G3E > > reg: > maxItems: 1 > @@ -71,179 +74,327 @@ properties: > const: 3 > > interrupts: > - items: > - - description: GPT32E0.GTCCRA input capture/compare match > - - description: GPT32E0.GTCCRB input capture/compare > - - description: GPT32E0.GTCCRC compare match > - - description: GPT32E0.GTCCRD compare match > - - description: GPT32E0.GTCCRE compare match > - - description: GPT32E0.GTCCRF compare match > - - description: GPT32E0.GTADTRA compare match > - - description: GPT32E0.GTADTRB compare match > - - description: GPT32E0.GTCNT overflow/GTPR compare match > - - description: GPT32E0.GTCNT underflow > - - description: GPT32E1.GTCCRA input capture/compare match > - - description: GPT32E1.GTCCRB input capture/compare > - - description: GPT32E1.GTCCRC compare match > - - description: GPT32E1.GTCCRD compare match > - - description: GPT32E1.GTCCRE compare match > - - description: GPT32E1.GTCCRF compare match > - - description: GPT32E1.GTADTRA compare match > - - description: GPT32E1.GTADTRB compare match > - - description: GPT32E1.GTCNT overflow/GTPR compare match > - - description: GPT32E1.GTCNT underflow > - - description: GPT32E2.GTCCRA input capture/compare match > - - description: GPT32E2.GTCCRB input capture/compare > - - description: GPT32E2.GTCCRC compare match > - - description: GPT32E2.GTCCRD compare match > - - description: GPT32E2.GTCCRE compare match > - - description: GPT32E2.GTCCRF compare match > - - description: GPT32E2.GTADTRA compare match > - - description: GPT32E2.GTADTRB compare match > - - description: GPT32E2.GTCNT overflow/GTPR compare match > - - description: GPT32E2.GTCNT underflow > - - description: GPT32E3.GTCCRA input capture/compare match > - - description: GPT32E3.GTCCRB input capture/compare > - - description: GPT32E3.GTCCRC compare match > - - description: GPT32E3.GTCCRD compare match > - - description: GPT32E3.GTCCRE compare match > - - description: GPT32E3.GTCCRF compare match > - - description: GPT32E3.GTADTRA compare match > - - description: GPT32E3.GTADTRB compare match > - - description: GPT32E3.GTCNT overflow/GTPR compare match > - - description: GPT32E3.GTCNT underflow > - - description: GPT32E4.GTCCRA input capture/compare match > - - description: GPT32E4.GTCCRB input capture/compare > - - description: GPT32E4.GTCCRC compare match > - - description: GPT32E4.GTCCRD compare match > - - description: GPT32E4.GTCCRE compare match > - - description: GPT32E4.GTCCRF compare match > - - description: GPT32E4.GTADTRA compare match > - - description: GPT32E4.GTADTRB compare match > - - description: GPT32E4.GTCNT overflow/GTPR compare match > - - description: GPT32E4.GTCNT underflow > - - description: GPT32E5.GTCCRA input capture/compare match > - - description: GPT32E5.GTCCRB input capture/compare > - - description: GPT32E5.GTCCRC compare match > - - description: GPT32E5.GTCCRD compare match > - - description: GPT32E5.GTCCRE compare match > - - description: GPT32E5.GTCCRF compare match > - - description: GPT32E5.GTADTRA compare match > - - description: GPT32E5.GTADTRB compare match > - - description: GPT32E5.GTCNT overflow/GTPR compare match > - - description: GPT32E5.GTCNT underflow > - - description: GPT32E6.GTCCRA input capture/compare match > - - description: GPT32E6.GTCCRB input capture/compare > - - description: GPT32E6.GTCCRC compare match > - - description: GPT32E6.GTCCRD compare match > - - description: GPT32E6.GTCCRE compare match > - - description: GPT32E6.GTCCRF compare match > - - description: GPT32E6.GTADTRA compare match > - - description: GPT32E6.GTADTRB compare match > - - description: GPT32E6.GTCNT overflow/GTPR compare match > - - description: GPT32E6.GTCNT underflow > - - description: GPT32E7.GTCCRA input capture/compare match > - - description: GPT32E7.GTCCRB input capture/compare > - - description: GPT32E7.GTCCRC compare match > - - description: GPT32E7.GTCCRD compare match > - - description: GPT32E7.GTCCRE compare match > - - description: GPT32E7.GTCCRF compare match > - - description: GPT32E7.GTADTRA compare match > - - description: GPT32E7.GTADTRB compare match > - - description: GPT32E7.GTCNT overflow/GTPR compare match > - - description: GPT32E7.GTCNT underflow > + oneOf: > + - items: > + - description: GPT32E0.GTCCRA input capture/compare match > + - description: GPT32E0.GTCCRB input capture/compare > + - description: GPT32E0.GTCCRC compare match > + - description: GPT32E0.GTCCRD compare match > + - description: GPT32E0.GTCCRE compare match > + - description: GPT32E0.GTCCRF compare match > + - description: GPT32E0.GTADTRA compare match > + - description: GPT32E0.GTADTRB compare match > + - description: GPT32E0.GTCNT overflow/GTPR compare match > + - description: GPT32E0.GTCNT underflow > + - description: GPT32E1.GTCCRA input capture/compare match > + - description: GPT32E1.GTCCRB input capture/compare > + - description: GPT32E1.GTCCRC compare match > + - description: GPT32E1.GTCCRD compare match > + - description: GPT32E1.GTCCRE compare match > + - description: GPT32E1.GTCCRF compare match > + - description: GPT32E1.GTADTRA compare match > + - description: GPT32E1.GTADTRB compare match > + - description: GPT32E1.GTCNT overflow/GTPR compare match > + - description: GPT32E1.GTCNT underflow > + - description: GPT32E2.GTCCRA input capture/compare match > + - description: GPT32E2.GTCCRB input capture/compare > + - description: GPT32E2.GTCCRC compare match > + - description: GPT32E2.GTCCRD compare match > + - description: GPT32E2.GTCCRE compare match > + - description: GPT32E2.GTCCRF compare match > + - description: GPT32E2.GTADTRA compare match > + - description: GPT32E2.GTADTRB compare match > + - description: GPT32E2.GTCNT overflow/GTPR compare match > + - description: GPT32E2.GTCNT underflow > + - description: GPT32E3.GTCCRA input capture/compare match > + - description: GPT32E3.GTCCRB input capture/compare > + - description: GPT32E3.GTCCRC compare match > + - description: GPT32E3.GTCCRD compare match > + - description: GPT32E3.GTCCRE compare match > + - description: GPT32E3.GTCCRF compare match > + - description: GPT32E3.GTADTRA compare match > + - description: GPT32E3.GTADTRB compare match > + - description: GPT32E3.GTCNT overflow/GTPR compare match > + - description: GPT32E3.GTCNT underflow > + - description: GPT32E4.GTCCRA input capture/compare match > + - description: GPT32E4.GTCCRB input capture/compare > + - description: GPT32E4.GTCCRC compare match > + - description: GPT32E4.GTCCRD compare match > + - description: GPT32E4.GTCCRE compare match > + - description: GPT32E4.GTCCRF compare match > + - description: GPT32E4.GTADTRA compare match > + - description: GPT32E4.GTADTRB compare match > + - description: GPT32E4.GTCNT overflow/GTPR compare match > + - description: GPT32E4.GTCNT underflow > + - description: GPT32E5.GTCCRA input capture/compare match > + - description: GPT32E5.GTCCRB input capture/compare > + - description: GPT32E5.GTCCRC compare match > + - description: GPT32E5.GTCCRD compare match > + - description: GPT32E5.GTCCRE compare match > + - description: GPT32E5.GTCCRF compare match > + - description: GPT32E5.GTADTRA compare match > + - description: GPT32E5.GTADTRB compare match > + - description: GPT32E5.GTCNT overflow/GTPR compare match > + - description: GPT32E5.GTCNT underflow > + - description: GPT32E6.GTCCRA input capture/compare match > + - description: GPT32E6.GTCCRB input capture/compare > + - description: GPT32E6.GTCCRC compare match > + - description: GPT32E6.GTCCRD compare match > + - description: GPT32E6.GTCCRE compare match > + - description: GPT32E6.GTCCRF compare match > + - description: GPT32E6.GTADTRA compare match > + - description: GPT32E6.GTADTRB compare match > + - description: GPT32E6.GTCNT overflow/GTPR compare match > + - description: GPT32E6.GTCNT underflow > + - description: GPT32E7.GTCCRA input capture/compare match > + - description: GPT32E7.GTCCRB input capture/compare > + - description: GPT32E7.GTCCRC compare match > + - description: GPT32E7.GTCCRD compare match > + - description: GPT32E7.GTCCRE compare match > + - description: GPT32E7.GTCCRF compare match > + - description: GPT32E7.GTADTRA compare match > + - description: GPT32E7.GTADTRB compare match > + - description: GPT32E7.GTCNT overflow/GTPR compare match > + - description: GPT32E7.GTCNT underflow > + - items: > + - description: Input capture/compare match of the GTCCRA for channel 0 and 8 > + - description: Input capture/compare match of the GTCCRB for channel 0 and 8 > + - description: Compare match with the GTCCRC for channel 0 and 8 > + - description: Compare match with the GTCCRD for channel 0 and 8 > + - description: Compare match with the GTCCRE for channel 0 and 8 > + - description: Compare match with the GTCCRF for channel 0 and 8 > + - description: A and B both high interrupt for channel 0 and 8 > + - description: A and B both low interrupt for channel 0 and 8 > + - description: Input capture/compare match of the GTCCRA for channel 1 and 9 > + - description: Input capture/compare match of the GTCCRB for channel 1 and 9 > + - description: Compare match with the GTCCRC for channel 1 and 9 > + - description: Compare match with the GTCCRD for channel 1 and 9 > + - description: Compare match with the GTCCRE for channel 1 and 9 > + - description: Compare match with the GTCCRF for channel 1 and 9 > + - description: A and B both high interrupt for channel 1 and 9 > + - description: A and B both low interrupt for channel 1 and 9 > + - description: Input capture/compare match of the GTCCRA for channel 2 and 10 > + - description: Input capture/compare match of the GTCCRB for channel 2 and 10 > + - description: Compare match with the GTCCRC for channel 2 and 10 > + - description: Compare match with the GTCCRD for channel 2 and 10 > + - description: Compare match with the GTCCRE for channel 2 and 10 > + - description: Compare match with the GTCCRF for channel 2 and 10 > + - description: A and B both high interrupt for channel 2 and 10 > + - description: A and B both low interrupt for channel 2 and 10 > + - description: Input capture/compare match of the GTCCRA for channel 3 and 11 > + - description: Input capture/compare match of the GTCCRB for channel 3 and 11 > + - description: Compare match with the GTCCRC for channel 3 and 11 > + - description: Compare match with the GTCCRD for channel 3 and 11 > + - description: Compare match with the GTCCRE for channel 3 and 11 > + - description: Compare match with the GTCCRF for channel 3 and 11 > + - description: A and B both high interrupt for channel 3 and 11 > + - description: A and B both low interrupt for channel 3 and 11 > + - description: Input capture/compare match of the GTCCRA for channel 4 and 12 > + - description: Input capture/compare match of the GTCCRB for channel 4 and 12 > + - description: Compare match with the GTCCRC for channel 4 and 12 > + - description: Compare match with the GTCCRD for channel 4 and 12 > + - description: Compare match with the GTCCRE for channel 4 and 12 > + - description: Compare match with the GTCCRF for channel 4 and 12 > + - description: A and B both high interrupt for channel 4 and 12 > + - description: A and B both low interrupt for channel 4 and 12 > + - description: Input capture/compare match of the GTCCRA for channel 5 and 13 > + - description: Input capture/compare match of the GTCCRB for channel 5 and 13 > + - description: Compare match with the GTCCRC for channel 5 and 13 > + - description: Compare match with the GTCCRD for channel 5 and 13 > + - description: Compare match with the GTCCRE for channel 5 and 13 > + - description: Compare match with the GTCCRF for channel 5 and 13 > + - description: A and B both high interrupt for channel 5 and 13 > + - description: A and B both low interrupt for channel 5 and 13 > + - description: Input capture/compare match of the GTCCRA for channel 6 and 14 > + - description: Input capture/compare match of the GTCCRB for channel 6 and 14 > + - description: Compare match with the GTCCRC for channel 6 and 14 > + - description: Compare match with the GTCCRD for channel 6 and 14 > + - description: Compare match with the GTCCRE for channel 6 and 14 > + - description: Compare match with the GTCCRF for channel 6 and 14 > + - description: A and B both high interrupt for channel 6 and 14 > + - description: A and B both low interrupt for channel 6 and 14 > + - description: Input capture/compare match of the GTCCRA for channel 7 and 15 > + - description: Input capture/compare match of the GTCCRB for channel 7 and 15 > + - description: Compare match with the GTCCRC for channel 7 and 15 > + - description: Compare match with the GTCCRD for channel 7 and 15 > + - description: Compare match with the GTCCRE for channel 7 and 15 > + - description: Compare match with the GTCCRF for channel 7 and 15 > + - description: A and B both high interrupt for channel 7 and 15 > + - description: A and B both low interrupt for channel 7 and 15 > > interrupt-names: > - items: > - - const: ccmpa0 > - - const: ccmpb0 > - - const: cmpc0 > - - const: cmpd0 > - - const: cmpe0 > - - const: cmpf0 > - - const: adtrga0 > - - const: adtrgb0 > - - const: ovf0 > - - const: unf0 > - - const: ccmpa1 > - - const: ccmpb1 > - - const: cmpc1 > - - const: cmpd1 > - - const: cmpe1 > - - const: cmpf1 > - - const: adtrga1 > - - const: adtrgb1 > - - const: ovf1 > - - const: unf1 > - - const: ccmpa2 > - - const: ccmpb2 > - - const: cmpc2 > - - const: cmpd2 > - - const: cmpe2 > - - const: cmpf2 > - - const: adtrga2 > - - const: adtrgb2 > - - const: ovf2 > - - const: unf2 > - - const: ccmpa3 > - - const: ccmpb3 > - - const: cmpc3 > - - const: cmpd3 > - - const: cmpe3 > - - const: cmpf3 > - - const: adtrga3 > - - const: adtrgb3 > - - const: ovf3 > - - const: unf3 > - - const: ccmpa4 > - - const: ccmpb4 > - - const: cmpc4 > - - const: cmpd4 > - - const: cmpe4 > - - const: cmpf4 > - - const: adtrga4 > - - const: adtrgb4 > - - const: ovf4 > - - const: unf4 > - - const: ccmpa5 > - - const: ccmpb5 > - - const: cmpc5 > - - const: cmpd5 > - - const: cmpe5 > - - const: cmpf5 > - - const: adtrga5 > - - const: adtrgb5 > - - const: ovf5 > - - const: unf5 > - - const: ccmpa6 > - - const: ccmpb6 > - - const: cmpc6 > - - const: cmpd6 > - - const: cmpe6 > - - const: cmpf6 > - - const: adtrga6 > - - const: adtrgb6 > - - const: ovf6 > - - const: unf6 > - - const: ccmpa7 > - - const: ccmpb7 > - - const: cmpc7 > - - const: cmpd7 > - - const: cmpe7 > - - const: cmpf7 > - - const: adtrga7 > - - const: adtrgb7 > - - const: ovf7 > - - const: unf7 > + oneOf: > + - items: > + - const: ccmpa0 > + - const: ccmpb0 > + - const: cmpc0 > + - const: cmpd0 > + - const: cmpe0 > + - const: cmpf0 > + - const: adtrga0 > + - const: adtrgb0 > + - const: ovf0 > + - const: unf0 > + - const: ccmpa1 > + - const: ccmpb1 > + - const: cmpc1 > + - const: cmpd1 > + - const: cmpe1 > + - const: cmpf1 > + - const: adtrga1 > + - const: adtrgb1 > + - const: ovf1 > + - const: unf1 > + - const: ccmpa2 > + - const: ccmpb2 > + - const: cmpc2 > + - const: cmpd2 > + - const: cmpe2 > + - const: cmpf2 > + - const: adtrga2 > + - const: adtrgb2 > + - const: ovf2 > + - const: unf2 > + - const: ccmpa3 > + - const: ccmpb3 > + - const: cmpc3 > + - const: cmpd3 > + - const: cmpe3 > + - const: cmpf3 > + - const: adtrga3 > + - const: adtrgb3 > + - const: ovf3 > + - const: unf3 > + - const: ccmpa4 > + - const: ccmpb4 > + - const: cmpc4 > + - const: cmpd4 > + - const: cmpe4 > + - const: cmpf4 > + - const: adtrga4 > + - const: adtrgb4 > + - const: ovf4 > + - const: unf4 > + - const: ccmpa5 > + - const: ccmpb5 > + - const: cmpc5 > + - const: cmpd5 > + - const: cmpe5 > + - const: cmpf5 > + - const: adtrga5 > + - const: adtrgb5 > + - const: ovf5 > + - const: unf5 > + - const: ccmpa6 > + - const: ccmpb6 > + - const: cmpc6 > + - const: cmpd6 > + - const: cmpe6 > + - const: cmpf6 > + - const: adtrga6 > + - const: adtrgb6 > + - const: ovf6 > + - const: unf6 > + - const: ccmpa7 > + - const: ccmpb7 > + - const: cmpc7 > + - const: cmpd7 > + - const: cmpe7 > + - const: cmpf7 > + - const: adtrga7 > + - const: adtrgb7 > + - const: ovf7 > + - const: unf7 > + - items: > + - const: gtcia0 > + - const: gtcib0 > + - const: gtcic0 > + - const: gtcid0 > + - const: gtcie0 > + - const: gtcif0 > + - const: gtcih0 > + - const: gtcil0 > + - const: gtcia1 > + - const: gtcib1 > + - const: gtcic1 > + - const: gtcid1 > + - const: gtcie1 > + - const: gtcif1 > + - const: gtcih1 > + - const: gtcil1 > + - const: gtcia2 > + - const: gtcib2 > + - const: gtcic2 > + - const: gtcid2 > + - const: gtcie2 > + - const: gtcif2 > + - const: gtcih2 > + - const: gtcil2 > + - const: gtcia3 > + - const: gtcib3 > + - const: gtcic3 > + - const: gtcid3 > + - const: gtcie3 > + - const: gtcif3 > + - const: gtcih3 > + - const: gtcil3 > + - const: gtcia4 > + - const: gtcib4 > + - const: gtcic4 > + - const: gtcid4 > + - const: gtcie4 > + - const: gtcif4 > + - const: gtcih4 > + - const: gtcil4 > + - const: gtcia5 > + - const: gtcib5 > + - const: gtcic5 > + - const: gtcid5 > + - const: gtcie5 > + - const: gtcif5 > + - const: gtcih5 > + - const: gtcil5 > + - const: gtcia6 > + - const: gtcib6 > + - const: gtcic6 > + - const: gtcid6 > + - const: gtcie6 > + - const: gtcif6 > + - const: gtcih6 > + - const: gtcil6 > + - const: gtcia7 > + - const: gtcib7 > + - const: gtcic7 > + - const: gtcid7 > + - const: gtcie7 > + - const: gtcif7 > + - const: gtcih7 > + - const: gtcil7 > > clocks: > - maxItems: 1 > + items: > + - description: Core clock (PCLKD) > + - description: Bus clock (PCLKA) > + minItems: 1 > + > + clock-names: > + items: > + - const: core > + - const: bus > > power-domains: > maxItems: 1 > > resets: > - maxItems: 1 > + items: > + - description: Reset for bus clock (PCLKA/PCLKD) > + - description: Reset for core clock (PCLKD) > + minItems: 1 > + > + reset-names: > + items: > + - const: rst_p > + - const: rst_s > > required: > - compatible > @@ -257,6 +408,42 @@ required: > allOf: > - $ref: pwm.yaml# > > + - if: > + properties: > + compatible: > + contains: > + const: renesas,r9a09g047-gpt > + then: > + properties: > + clocks: > + minItems: 2 > + resets: > + minItems: 2 > + interrupts: > + maxItems: 64 > + interrupt-names: > + maxItems: 64 > + > + required: > + - clock-names > + - reset-names > + > + - if: > + properties: > + compatible: > + contains: > + const: renesas,rzg2l-gpt > + then: > + properties: > + clocks: > + maxItems: 1 > + resets: > + maxItems: 1 > + interrupts: > + minItems: 80 > + interrupt-names: > + minItems: 80 > + > additionalProperties: false > > examples: > -- > 2.43.0 >