blob: fadc871fd6b0eadad6413886b42472b191e3bd06 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/can/renesas,rcar-can.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Renesas R-Car CAN Controller
8
9maintainers:
10 - Sergei Shtylyov <sergei.shtylyov@gmail.com>
11
12properties:
13 compatible:
14 oneOf:
15 - items:
16 - enum:
17 - renesas,can-r8a7778 # R-Car M1-A
18 - renesas,can-r8a7779 # R-Car H1
19 - const: renesas,rcar-gen1-can # R-Car Gen1
20
21 - items:
22 - enum:
23 - renesas,can-r8a7742 # RZ/G1H
24 - renesas,can-r8a7743 # RZ/G1M
25 - renesas,can-r8a7744 # RZ/G1N
26 - renesas,can-r8a7745 # RZ/G1E
27 - renesas,can-r8a77470 # RZ/G1C
28 - renesas,can-r8a7790 # R-Car H2
29 - renesas,can-r8a7791 # R-Car M2-W
30 - renesas,can-r8a7792 # R-Car V2H
31 - renesas,can-r8a7793 # R-Car M2-N
32 - renesas,can-r8a7794 # R-Car E2
33 - const: renesas,rcar-gen2-can # R-Car Gen2 and RZ/G1
34
35 - items:
36 - enum:
37 - renesas,can-r8a774a1 # RZ/G2M
38 - renesas,can-r8a774b1 # RZ/G2N
39 - renesas,can-r8a774c0 # RZ/G2E
40 - renesas,can-r8a774e1 # RZ/G2H
41 - renesas,can-r8a7795 # R-Car H3
42 - renesas,can-r8a7796 # R-Car M3-W
43 - renesas,can-r8a77961 # R-Car M3-W+
44 - renesas,can-r8a77965 # R-Car M3-N
45 - renesas,can-r8a77990 # R-Car E3
46 - renesas,can-r8a77995 # R-Car D3
47 - const: renesas,rcar-gen3-can # R-Car Gen3 and RZ/G2
48
49 reg:
50 maxItems: 1
51
52 interrupts:
53 maxItems: 1
54
55 clocks:
56 maxItems: 3
57
58 clock-names:
59 items:
60 - const: clkp1
61 - const: clkp2
62 - const: can_clk
63
64 power-domains:
65 maxItems: 1
66
67 resets:
68 maxItems: 1
69
70 renesas,can-clock-select:
71 $ref: /schemas/types.yaml#/definitions/uint32
72 enum: [ 0, 1, 3 ]
73 default: 0
74 description: |
75 R-Car CAN Clock Source Select. Valid values are:
76 <0x0> (default) : Peripheral clock (clkp1)
77 <0x1> : Peripheral clock (clkp2)
78 <0x3> : External input clock
79
80 assigned-clocks:
81 description:
82 Reference to the clkp2 (CANFD) clock.
83 On R-Car Gen3 and RZ/G2 SoCs, "clkp2" is the CANFD clock. This is a div6
84 clock and can be used by both CAN and CAN FD controllers at the same
85 time. It needs to be scaled to maximum frequency if any of these
86 controllers use it.
87
88 assigned-clock-rates:
89 description: Maximum frequency of the CANFD clock.
90
91required:
92 - compatible
93 - reg
94 - interrupts
95 - clocks
96 - clock-names
97 - power-domains
98
99allOf:
100 - $ref: can-controller.yaml#
101
102 - if:
103 not:
104 properties:
105 compatible:
106 contains:
107 const: renesas,rcar-gen1-can
108 then:
109 required:
110 - resets
111
112 - if:
113 properties:
114 compatible:
115 contains:
116 const: renesas,rcar-gen3-can
117 then:
118 required:
119 - assigned-clocks
120 - assigned-clock-rates
121
122unevaluatedProperties: false
123
124examples:
125 - |
126 #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
127 #include <dt-bindings/interrupt-controller/arm-gic.h>
128 #include <dt-bindings/power/r8a7791-sysc.h>
129
130 can0: can@e6e80000 {
131 compatible = "renesas,can-r8a7791", "renesas,rcar-gen2-can";
132 reg = <0xe6e80000 0x1000>;
133 interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
134 clocks = <&cpg CPG_MOD 916>,
135 <&cpg CPG_CORE R8A7791_CLK_RCAN>, <&can_clk>;
136 clock-names = "clkp1", "clkp2", "can_clk";
137 power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
138 resets = <&cpg 916>;
139 };