1*8a5e7d19SGeert Uytterhoeven# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*8a5e7d19SGeert Uytterhoeven%YAML 1.2
3*8a5e7d19SGeert Uytterhoeven---
4*8a5e7d19SGeert Uytterhoeven$id: http://devicetree.org/schemas/net/can/renesas,rcar-canfd.yaml#
5*8a5e7d19SGeert Uytterhoeven$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8a5e7d19SGeert Uytterhoeven
7*8a5e7d19SGeert Uytterhoeventitle: Renesas R-Car CAN FD Controller
8*8a5e7d19SGeert Uytterhoeven
9*8a5e7d19SGeert Uytterhoevenmaintainers:
10*8a5e7d19SGeert Uytterhoeven  - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
11*8a5e7d19SGeert Uytterhoeven
12*8a5e7d19SGeert UytterhoevenallOf:
13*8a5e7d19SGeert Uytterhoeven  - $ref: can-controller.yaml#
14*8a5e7d19SGeert Uytterhoeven
15*8a5e7d19SGeert Uytterhoevenproperties:
16*8a5e7d19SGeert Uytterhoeven  compatible:
17*8a5e7d19SGeert Uytterhoeven    oneOf:
18*8a5e7d19SGeert Uytterhoeven      - items:
19*8a5e7d19SGeert Uytterhoeven          - enum:
20*8a5e7d19SGeert Uytterhoeven              - renesas,r8a774a1-canfd     # RZ/G2M
21*8a5e7d19SGeert Uytterhoeven              - renesas,r8a774b1-canfd     # RZ/G2N
22*8a5e7d19SGeert Uytterhoeven              - renesas,r8a774c0-canfd     # RZ/G2E
23*8a5e7d19SGeert Uytterhoeven              - renesas,r8a774e1-canfd     # RZ/G2H
24*8a5e7d19SGeert Uytterhoeven              - renesas,r8a7795-canfd      # R-Car H3
25*8a5e7d19SGeert Uytterhoeven              - renesas,r8a7796-canfd      # R-Car M3-W
26*8a5e7d19SGeert Uytterhoeven              - renesas,r8a77965-canfd     # R-Car M3-N
27*8a5e7d19SGeert Uytterhoeven              - renesas,r8a77970-canfd     # R-Car V3M
28*8a5e7d19SGeert Uytterhoeven              - renesas,r8a77980-canfd     # R-Car V3H
29*8a5e7d19SGeert Uytterhoeven              - renesas,r8a77990-canfd     # R-Car E3
30*8a5e7d19SGeert Uytterhoeven              - renesas,r8a77995-canfd     # R-Car D3
31*8a5e7d19SGeert Uytterhoeven          - const: renesas,rcar-gen3-canfd # R-Car Gen3 and RZ/G2
32*8a5e7d19SGeert Uytterhoeven
33*8a5e7d19SGeert Uytterhoeven  reg:
34*8a5e7d19SGeert Uytterhoeven    maxItems: 1
35*8a5e7d19SGeert Uytterhoeven
36*8a5e7d19SGeert Uytterhoeven  interrupts:
37*8a5e7d19SGeert Uytterhoeven    items:
38*8a5e7d19SGeert Uytterhoeven      - description: Channel interrupt
39*8a5e7d19SGeert Uytterhoeven      - description: Global interrupt
40*8a5e7d19SGeert Uytterhoeven
41*8a5e7d19SGeert Uytterhoeven  clocks:
42*8a5e7d19SGeert Uytterhoeven    maxItems: 3
43*8a5e7d19SGeert Uytterhoeven
44*8a5e7d19SGeert Uytterhoeven  clock-names:
45*8a5e7d19SGeert Uytterhoeven    items:
46*8a5e7d19SGeert Uytterhoeven      - const: fck
47*8a5e7d19SGeert Uytterhoeven      - const: canfd
48*8a5e7d19SGeert Uytterhoeven      - const: can_clk
49*8a5e7d19SGeert Uytterhoeven
50*8a5e7d19SGeert Uytterhoeven  power-domains:
51*8a5e7d19SGeert Uytterhoeven    maxItems: 1
52*8a5e7d19SGeert Uytterhoeven
53*8a5e7d19SGeert Uytterhoeven  resets:
54*8a5e7d19SGeert Uytterhoeven    maxItems: 1
55*8a5e7d19SGeert Uytterhoeven
56*8a5e7d19SGeert Uytterhoeven  renesas,no-can-fd:
57*8a5e7d19SGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/flag
58*8a5e7d19SGeert Uytterhoeven    description:
59*8a5e7d19SGeert Uytterhoeven      The controller can operate in either CAN FD only mode (default) or
60*8a5e7d19SGeert Uytterhoeven      Classical CAN only mode.  The mode is global to both the channels.
61*8a5e7d19SGeert Uytterhoeven      Specify this property to put the controller in Classical CAN only mode.
62*8a5e7d19SGeert Uytterhoeven
63*8a5e7d19SGeert Uytterhoeven  assigned-clocks:
64*8a5e7d19SGeert Uytterhoeven    description:
65*8a5e7d19SGeert Uytterhoeven      Reference to the CANFD clock.  The CANFD clock is a div6 clock and can be
66*8a5e7d19SGeert Uytterhoeven      used by both CAN (if present) and CAN FD controllers at the same time.
67*8a5e7d19SGeert Uytterhoeven      It needs to be scaled to maximum frequency if any of these controllers
68*8a5e7d19SGeert Uytterhoeven      use it.
69*8a5e7d19SGeert Uytterhoeven
70*8a5e7d19SGeert Uytterhoeven  assigned-clock-rates:
71*8a5e7d19SGeert Uytterhoeven    description: Maximum frequency of the CANFD clock.
72*8a5e7d19SGeert Uytterhoeven
73*8a5e7d19SGeert UytterhoevenpatternProperties:
74*8a5e7d19SGeert Uytterhoeven  "^channel[01]$":
75*8a5e7d19SGeert Uytterhoeven    type: object
76*8a5e7d19SGeert Uytterhoeven    description:
77*8a5e7d19SGeert Uytterhoeven      The controller supports two channels and each is represented as a child
78*8a5e7d19SGeert Uytterhoeven      node.  Each child node supports the "status" property only, which
79*8a5e7d19SGeert Uytterhoeven      is used to enable/disable the respective channel.
80*8a5e7d19SGeert Uytterhoeven
81*8a5e7d19SGeert Uytterhoevenrequired:
82*8a5e7d19SGeert Uytterhoeven  - compatible
83*8a5e7d19SGeert Uytterhoeven  - reg
84*8a5e7d19SGeert Uytterhoeven  - interrupts
85*8a5e7d19SGeert Uytterhoeven  - clocks
86*8a5e7d19SGeert Uytterhoeven  - clock-names
87*8a5e7d19SGeert Uytterhoeven  - power-domains
88*8a5e7d19SGeert Uytterhoeven  - resets
89*8a5e7d19SGeert Uytterhoeven  - assigned-clocks
90*8a5e7d19SGeert Uytterhoeven  - assigned-clock-rates
91*8a5e7d19SGeert Uytterhoeven  - channel0
92*8a5e7d19SGeert Uytterhoeven  - channel1
93*8a5e7d19SGeert Uytterhoeven
94*8a5e7d19SGeert UytterhoevenunevaluatedProperties: false
95*8a5e7d19SGeert Uytterhoeven
96*8a5e7d19SGeert Uytterhoevenexamples:
97*8a5e7d19SGeert Uytterhoeven  - |
98*8a5e7d19SGeert Uytterhoeven    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
99*8a5e7d19SGeert Uytterhoeven    #include <dt-bindings/interrupt-controller/arm-gic.h>
100*8a5e7d19SGeert Uytterhoeven    #include <dt-bindings/power/r8a7795-sysc.h>
101*8a5e7d19SGeert Uytterhoeven
102*8a5e7d19SGeert Uytterhoeven    canfd: can@e66c0000 {
103*8a5e7d19SGeert Uytterhoeven            compatible = "renesas,r8a7795-canfd",
104*8a5e7d19SGeert Uytterhoeven                         "renesas,rcar-gen3-canfd";
105*8a5e7d19SGeert Uytterhoeven            reg = <0xe66c0000 0x8000>;
106*8a5e7d19SGeert Uytterhoeven            interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
107*8a5e7d19SGeert Uytterhoeven                         <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
108*8a5e7d19SGeert Uytterhoeven            clocks = <&cpg CPG_MOD 914>,
109*8a5e7d19SGeert Uytterhoeven                     <&cpg CPG_CORE R8A7795_CLK_CANFD>,
110*8a5e7d19SGeert Uytterhoeven                     <&can_clk>;
111*8a5e7d19SGeert Uytterhoeven            clock-names = "fck", "canfd", "can_clk";
112*8a5e7d19SGeert Uytterhoeven            assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>;
113*8a5e7d19SGeert Uytterhoeven            assigned-clock-rates = <40000000>;
114*8a5e7d19SGeert Uytterhoeven            power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
115*8a5e7d19SGeert Uytterhoeven            resets = <&cpg 914>;
116*8a5e7d19SGeert Uytterhoeven
117*8a5e7d19SGeert Uytterhoeven            channel0 {
118*8a5e7d19SGeert Uytterhoeven            };
119*8a5e7d19SGeert Uytterhoeven
120*8a5e7d19SGeert Uytterhoeven            channel1 {
121*8a5e7d19SGeert Uytterhoeven            };
122*8a5e7d19SGeert Uytterhoeven    };
123