[PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs

Prabhakar posted 4 patches 1 month, 1 week ago
There is a newer version of this series
[PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Prabhakar 1 month, 1 week ago
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
in that AFLPN and CFTML are different, there is no reset line for the IP,
and it only supports two channels.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2:
- No changes made.
---
 .../bindings/net/can/renesas,rcar-canfd.yaml  | 26 ++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
index fb709cfd26d7..4a83e9e34d67 100644
--- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
+++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
@@ -50,6 +50,12 @@ properties:
               - renesas,r9a09g057-canfd     # RZ/V2H(P)
           - const: renesas,r9a09g047-canfd
 
+      - const: renesas,r9a09g077-canfd      # RZ/T2H
+
+      - items:
+          - const: renesas,r9a09g087-canfd  # RZ/N2H
+          - const: renesas,r9a09g077-canfd
+
   reg:
     maxItems: 1
 
@@ -179,7 +185,6 @@ required:
   - clocks
   - clock-names
   - power-domains
-  - resets
   - assigned-clocks
   - assigned-clock-rates
   - channel0
@@ -243,11 +248,30 @@ allOf:
           minItems: 2
           maxItems: 2
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g077-canfd
+    then:
+      properties:
+        interrupts:
+          maxItems: 8
+
+        interrupt-names:
+          maxItems: 8
+
+        resets: false
+    else:
+      required:
+        - resets
+
   - if:
       properties:
         compatible:
           contains:
             enum:
+              - renesas,r9a09g077-canfd
               - renesas,rcar-gen3-canfd
               - renesas,rzg2l-canfd
     then:
-- 
2.52.0
Re: [PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Geert Uytterhoeven 1 month ago
On Tue, 30 Dec 2025 at 12:58, Prabhakar <prabhakar.csengg@gmail.com> wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
> CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
> in that AFLPN and CFTML are different, there is no reset line for the IP,
> and it only supports two channels.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

For the content:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert


--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Re: [PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Krzysztof Kozlowski 1 month, 1 week ago
On Tue, Dec 30, 2025 at 11:58:13AM +0000, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> 
> Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
> CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
> in that AFLPN and CFTML are different, there is no reset line for the IP,
> and it only supports two channels.
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v1->v2:
> - No changes made.
> ---
>  .../bindings/net/can/renesas,rcar-canfd.yaml  | 26 ++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> index fb709cfd26d7..4a83e9e34d67 100644
> --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> @@ -50,6 +50,12 @@ properties:
>                - renesas,r9a09g057-canfd     # RZ/V2H(P)
>            - const: renesas,r9a09g047-canfd
>  
> +      - const: renesas,r9a09g077-canfd      # RZ/T2H


That's part of other enum with single compatibles.

> +
> +      - items:
> +          - const: renesas,r9a09g087-canfd  # RZ/N2H
> +          - const: renesas,r9a09g077-canfd
> +
>    reg:
>      maxItems: 1
>  
> @@ -179,7 +185,6 @@ required:
>    - clocks
>    - clock-names
>    - power-domains
> -  - resets
>    - assigned-clocks
>    - assigned-clock-rates
>    - channel0
> @@ -243,11 +248,30 @@ allOf:
>            minItems: 2
>            maxItems: 2
>  
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: renesas,r9a09g077-canfd
> +    then:
> +      properties:
> +        interrupts:
> +          maxItems: 8
> +
> +        interrupt-names:
> +          maxItems: 8
> +
> +        resets: false
> +    else:
> +      required:
> +        - resets

Why is this de-synced with reset-names? Properties are supposed to
behave the same way, not once requiring resets other time requiring
reset-names.

Best regards,
Krzysztof
Re: [PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Lad, Prabhakar 1 month ago
Hi Krzysztof,

Thank you for the review.

On Fri, Jan 2, 2026 at 11:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On Tue, Dec 30, 2025 at 11:58:13AM +0000, Prabhakar wrote:
> > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> >
> > Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
> > CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
> > in that AFLPN and CFTML are different, there is no reset line for the IP,
> > and it only supports two channels.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> > v1->v2:
> > - No changes made.
> > ---
> >  .../bindings/net/can/renesas,rcar-canfd.yaml  | 26 ++++++++++++++++++-
> >  1 file changed, 25 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> > index fb709cfd26d7..4a83e9e34d67 100644
> > --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> > +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> > @@ -50,6 +50,12 @@ properties:
> >                - renesas,r9a09g057-canfd     # RZ/V2H(P)
> >            - const: renesas,r9a09g047-canfd
> >
> > +      - const: renesas,r9a09g077-canfd      # RZ/T2H
>
>
> That's part of other enum with single compatibles.
>
There is no enum with single compatibles as of in next [0], there is
only one compatible `renesas,r9a09g047-canfd`. I can club this with
RZ/T2H one.

[0] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml?h=next-20260106

> > +
> > +      - items:
> > +          - const: renesas,r9a09g087-canfd  # RZ/N2H
> > +          - const: renesas,r9a09g077-canfd
> > +
> >    reg:
> >      maxItems: 1
> >
> > @@ -179,7 +185,6 @@ required:
> >    - clocks
> >    - clock-names
> >    - power-domains
> > -  - resets
> >    - assigned-clocks
> >    - assigned-clock-rates
> >    - channel0
> > @@ -243,11 +248,30 @@ allOf:
> >            minItems: 2
> >            maxItems: 2
> >
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            const: renesas,r9a09g077-canfd
> > +    then:
> > +      properties:
> > +        interrupts:
> > +          maxItems: 8
> > +
> > +        interrupt-names:
> > +          maxItems: 8
> > +
> > +        resets: false
> > +    else:
> > +      required:
> > +        - resets
>
> Why is this de-synced with reset-names? Properties are supposed to
> behave the same way, not once requiring resets other time requiring
> reset-names.
>
There are SoCs that have a single reset and others that require two
resets. For SoCs that require two resets, the reset-names property is
marked as required, while for SoCs with a single reset it is not.
Apart from the RZ/T2H SoC, all SoCs have either one or two resets.
This difference is why the properties became de-synced. Let me know if
this can be handled differently.

Cheers,
Prabhakar
Re: [PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Krzysztof Kozlowski 1 month ago
On 06/01/2026 18:26, Lad, Prabhakar wrote:
> Hi Krzysztof,
> 
> Thank you for the review.
> 
> On Fri, Jan 2, 2026 at 11:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>
>> On Tue, Dec 30, 2025 at 11:58:13AM +0000, Prabhakar wrote:
>>> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>>>
>>> Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
>>> CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
>>> in that AFLPN and CFTML are different, there is no reset line for the IP,
>>> and it only supports two channels.
>>>
>>> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>>> ---
>>> v1->v2:
>>> - No changes made.
>>> ---
>>>  .../bindings/net/can/renesas,rcar-canfd.yaml  | 26 ++++++++++++++++++-
>>>  1 file changed, 25 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
>>> index fb709cfd26d7..4a83e9e34d67 100644
>>> --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
>>> +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
>>> @@ -50,6 +50,12 @@ properties:
>>>                - renesas,r9a09g057-canfd     # RZ/V2H(P)
>>>            - const: renesas,r9a09g047-canfd
>>>
>>> +      - const: renesas,r9a09g077-canfd      # RZ/T2H
>>
>>
>> That's part of other enum with single compatibles.
>>
> There is no enum with single compatibles as of in next [0], there is
> only one compatible `renesas,r9a09g047-canfd`. I can club this with
> RZ/T2H one.

This is the one which is supposed to be enum.

> 
> [0] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml?h=next-20260106
> 
>>> +
>>> +      - items:
>>> +          - const: renesas,r9a09g087-canfd  # RZ/N2H
>>> +          - const: renesas,r9a09g077-canfd
>>> +
>>>    reg:
>>>      maxItems: 1
>>>
>>> @@ -179,7 +185,6 @@ required:
>>>    - clocks
>>>    - clock-names
>>>    - power-domains
>>> -  - resets
>>>    - assigned-clocks
>>>    - assigned-clock-rates
>>>    - channel0
>>> @@ -243,11 +248,30 @@ allOf:
>>>            minItems: 2
>>>            maxItems: 2
>>>
>>> +  - if:
>>> +      properties:
>>> +        compatible:
>>> +          contains:
>>> +            const: renesas,r9a09g077-canfd
>>> +    then:
>>> +      properties:
>>> +        interrupts:
>>> +          maxItems: 8
>>> +
>>> +        interrupt-names:
>>> +          maxItems: 8
>>> +
>>> +        resets: false
>>> +    else:
>>> +      required:
>>> +        - resets
>>
>> Why is this de-synced with reset-names? Properties are supposed to
>> behave the same way, not once requiring resets other time requiring
>> reset-names.
>>
> There are SoCs that have a single reset and others that require two
> resets. For SoCs that require two resets, the reset-names property is
> marked as required, while for SoCs with a single reset it is not.

Sure, but I asked why? We expect (and it is documented already in the
docs) that xxx-names always follows xxx, so I really do not understand
why reset-names are valid but resets are not.

> Apart from the RZ/T2H SoC, all SoCs have either one or two resets.
> This difference is why the properties became de-synced. Let me know if
> this can be handled differently.
> 



Best regards,
Krzysztof
Re: [PATCH v2 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/T2H and RZ/N2H SoCs
Posted by Lad, Prabhakar 1 month ago
Hi Krzysztof,

On Wed, Jan 7, 2026 at 8:28 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 06/01/2026 18:26, Lad, Prabhakar wrote:
> > Hi Krzysztof,
> >
> > Thank you for the review.
> >
> > On Fri, Jan 2, 2026 at 11:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>
> >> On Tue, Dec 30, 2025 at 11:58:13AM +0000, Prabhakar wrote:
> >>> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> >>>
> >>> Document the CAN-FD controller used on the RZ/T2H and RZ/N2H SoCs. The
> >>> CAN-FD IP is largely compatible with the R-Car Gen4 block, but differs
> >>> in that AFLPN and CFTML are different, there is no reset line for the IP,
> >>> and it only supports two channels.
> >>>
> >>> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> >>> ---
> >>> v1->v2:
> >>> - No changes made.
> >>> ---
> >>>  .../bindings/net/can/renesas,rcar-canfd.yaml  | 26 ++++++++++++++++++-
> >>>  1 file changed, 25 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> >>> index fb709cfd26d7..4a83e9e34d67 100644
> >>> --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> >>> +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
> >>> @@ -50,6 +50,12 @@ properties:
> >>>                - renesas,r9a09g057-canfd     # RZ/V2H(P)
> >>>            - const: renesas,r9a09g047-canfd
> >>>
> >>> +      - const: renesas,r9a09g077-canfd      # RZ/T2H
> >>
> >>
> >> That's part of other enum with single compatibles.
> >>
> > There is no enum with single compatibles as of in next [0], there is
> > only one compatible `renesas,r9a09g047-canfd`. I can club this with
> > RZ/T2H one.
>
> This is the one which is supposed to be enum.
>
Ok.

> >
> > [0] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml?h=next-20260106
> >
> >>> +
> >>> +      - items:
> >>> +          - const: renesas,r9a09g087-canfd  # RZ/N2H
> >>> +          - const: renesas,r9a09g077-canfd
> >>> +
> >>>    reg:
> >>>      maxItems: 1
> >>>
> >>> @@ -179,7 +185,6 @@ required:
> >>>    - clocks
> >>>    - clock-names
> >>>    - power-domains
> >>> -  - resets
> >>>    - assigned-clocks
> >>>    - assigned-clock-rates
> >>>    - channel0
> >>> @@ -243,11 +248,30 @@ allOf:
> >>>            minItems: 2
> >>>            maxItems: 2
> >>>
> >>> +  - if:
> >>> +      properties:
> >>> +        compatible:
> >>> +          contains:
> >>> +            const: renesas,r9a09g077-canfd
> >>> +    then:
> >>> +      properties:
> >>> +        interrupts:
> >>> +          maxItems: 8
> >>> +
> >>> +        interrupt-names:
> >>> +          maxItems: 8
> >>> +
> >>> +        resets: false
> >>> +    else:
> >>> +      required:
> >>> +        - resets
> >>
> >> Why is this de-synced with reset-names? Properties are supposed to
> >> behave the same way, not once requiring resets other time requiring
> >> reset-names.
> >>
> > There are SoCs that have a single reset and others that require two
> > resets. For SoCs that require two resets, the reset-names property is
> > marked as required, while for SoCs with a single reset it is not.
>
> Sure, but I asked why? We expect (and it is documented already in the
> docs) that xxx-names always follows xxx, so I really do not understand
> why reset-names are valid but resets are not.
>
Sorry for being clear earlier, it's already taken care in patch 1/4
[1] with the below hunk which will restrict RZ/T2H to not allow
reset-names.

+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,r9a09g047-canfd
+              - renesas,rzg2l-canfd
+    then:
+      required:
+        - reset-names
+    else:
+      properties:
+        reset-names: false


[1] https://lore.kernel.org/all/20251230115814.53536-2-prabhakar.mahadev-lad.rj@bp.renesas.com/

Cheers,
Prabhakar