Merge tag 'for-5.15/io_uring-2021-09-04' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / net / can / renesas,rcar-canfd.yaml
1 # 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-canfd.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Renesas R-Car CAN FD Controller
8
9 maintainers:
10   - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
11
12 allOf:
13   - $ref: can-controller.yaml#
14
15 properties:
16   compatible:
17     oneOf:
18       - items:
19           - enum:
20               - renesas,r8a774a1-canfd     # RZ/G2M
21               - renesas,r8a774b1-canfd     # RZ/G2N
22               - renesas,r8a774c0-canfd     # RZ/G2E
23               - renesas,r8a774e1-canfd     # RZ/G2H
24               - renesas,r8a7795-canfd      # R-Car H3
25               - renesas,r8a7796-canfd      # R-Car M3-W
26               - renesas,r8a77965-canfd     # R-Car M3-N
27               - renesas,r8a77970-canfd     # R-Car V3M
28               - renesas,r8a77980-canfd     # R-Car V3H
29               - renesas,r8a77990-canfd     # R-Car E3
30               - renesas,r8a77995-canfd     # R-Car D3
31           - const: renesas,rcar-gen3-canfd # R-Car Gen3 and RZ/G2
32
33       - items:
34           - enum:
35               - renesas,r9a07g044-canfd    # RZ/G2{L,LC}
36           - const: renesas,rzg2l-canfd     # RZ/G2L family
37
38   reg:
39     maxItems: 1
40
41   interrupts: true
42
43   clocks:
44     maxItems: 3
45
46   clock-names:
47     items:
48       - const: fck
49       - const: canfd
50       - const: can_clk
51
52   power-domains:
53     maxItems: 1
54
55   resets: true
56
57   renesas,no-can-fd:
58     $ref: /schemas/types.yaml#/definitions/flag
59     description:
60       The controller can operate in either CAN FD only mode (default) or
61       Classical CAN only mode.  The mode is global to both the channels.
62       Specify this property to put the controller in Classical CAN only mode.
63
64   assigned-clocks:
65     description:
66       Reference to the CANFD clock.  The CANFD clock is a div6 clock and can be
67       used by both CAN (if present) and CAN FD controllers at the same time.
68       It needs to be scaled to maximum frequency if any of these controllers
69       use it.
70
71   assigned-clock-rates:
72     description: Maximum frequency of the CANFD clock.
73
74 patternProperties:
75   "^channel[01]$":
76     type: object
77     description:
78       The controller supports two channels and each is represented as a child
79       node.  Each child node supports the "status" property only, which
80       is used to enable/disable the respective channel.
81
82 required:
83   - compatible
84   - reg
85   - interrupts
86   - clocks
87   - clock-names
88   - power-domains
89   - resets
90   - assigned-clocks
91   - assigned-clock-rates
92   - channel0
93   - channel1
94
95 if:
96   properties:
97     compatible:
98       contains:
99         enum:
100           - renesas,rzg2l-canfd
101 then:
102   properties:
103     interrupts:
104       items:
105         - description: CAN global error interrupt
106         - description: CAN receive FIFO interrupt
107         - description: CAN0 error interrupt
108         - description: CAN0 transmit interrupt
109         - description: CAN0 transmit/receive FIFO receive completion interrupt
110         - description: CAN1 error interrupt
111         - description: CAN1 transmit interrupt
112         - description: CAN1 transmit/receive FIFO receive completion interrupt
113
114     interrupt-names:
115       items:
116         - const: g_err
117         - const: g_recc
118         - const: ch0_err
119         - const: ch0_rec
120         - const: ch0_trx
121         - const: ch1_err
122         - const: ch1_rec
123         - const: ch1_trx
124
125     resets:
126       maxItems: 2
127
128     reset-names:
129       items:
130         - const: rstp_n
131         - const: rstc_n
132
133   required:
134     - interrupt-names
135     - reset-names
136 else:
137   properties:
138     interrupts:
139       items:
140         - description: Channel interrupt
141         - description: Global interrupt
142
143     interrupt-names:
144       items:
145         - const: ch_int
146         - const: g_int
147
148     resets:
149       maxItems: 1
150
151 unevaluatedProperties: false
152
153 examples:
154   - |
155     #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
156     #include <dt-bindings/interrupt-controller/arm-gic.h>
157     #include <dt-bindings/power/r8a7795-sysc.h>
158
159     canfd: can@e66c0000 {
160             compatible = "renesas,r8a7795-canfd",
161                          "renesas,rcar-gen3-canfd";
162             reg = <0xe66c0000 0x8000>;
163             interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
164                          <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
165             clocks = <&cpg CPG_MOD 914>,
166                      <&cpg CPG_CORE R8A7795_CLK_CANFD>,
167                      <&can_clk>;
168             clock-names = "fck", "canfd", "can_clk";
169             assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>;
170             assigned-clock-rates = <40000000>;
171             power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
172             resets = <&cpg 914>;
173
174             channel0 {
175             };
176
177             channel1 {
178             };
179     };