xref: /linux/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
18a5e7d19SGeert Uytterhoeven# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28a5e7d19SGeert Uytterhoeven%YAML 1.2
38a5e7d19SGeert Uytterhoeven---
48a5e7d19SGeert Uytterhoeven$id: http://devicetree.org/schemas/net/can/renesas,rcar-canfd.yaml#
58a5e7d19SGeert Uytterhoeven$schema: http://devicetree.org/meta-schemas/core.yaml#
68a5e7d19SGeert Uytterhoeven
78a5e7d19SGeert Uytterhoeventitle: Renesas R-Car CAN FD Controller
88a5e7d19SGeert Uytterhoeven
98a5e7d19SGeert Uytterhoevenmaintainers:
108a5e7d19SGeert Uytterhoeven  - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
118a5e7d19SGeert Uytterhoeven
128a5e7d19SGeert Uytterhoevenproperties:
138a5e7d19SGeert Uytterhoeven  compatible:
148a5e7d19SGeert Uytterhoeven    oneOf:
158a5e7d19SGeert Uytterhoeven      - items:
168a5e7d19SGeert Uytterhoeven          - enum:
178a5e7d19SGeert Uytterhoeven              - renesas,r8a774a1-canfd     # RZ/G2M
188a5e7d19SGeert Uytterhoeven              - renesas,r8a774b1-canfd     # RZ/G2N
198a5e7d19SGeert Uytterhoeven              - renesas,r8a774c0-canfd     # RZ/G2E
208a5e7d19SGeert Uytterhoeven              - renesas,r8a774e1-canfd     # RZ/G2H
218a5e7d19SGeert Uytterhoeven              - renesas,r8a7795-canfd      # R-Car H3
228a5e7d19SGeert Uytterhoeven              - renesas,r8a7796-canfd      # R-Car M3-W
2344b6b105SWolfram Sang              - renesas,r8a77961-canfd     # R-Car M3-W+
248a5e7d19SGeert Uytterhoeven              - renesas,r8a77965-canfd     # R-Car M3-N
258a5e7d19SGeert Uytterhoeven              - renesas,r8a77970-canfd     # R-Car V3M
268a5e7d19SGeert Uytterhoeven              - renesas,r8a77980-canfd     # R-Car V3H
278a5e7d19SGeert Uytterhoeven              - renesas,r8a77990-canfd     # R-Car E3
288a5e7d19SGeert Uytterhoeven              - renesas,r8a77995-canfd     # R-Car D3
298a5e7d19SGeert Uytterhoeven          - const: renesas,rcar-gen3-canfd # R-Car Gen3 and RZ/G2
308a5e7d19SGeert Uytterhoeven
311aa5a06cSLad Prabhakar      - items:
321aa5a06cSLad Prabhakar          - enum:
33e8b98168SGeert Uytterhoeven              - renesas,r8a779a0-canfd     # R-Car V3U
343e17dc91SGeert Uytterhoeven              - renesas,r8a779g0-canfd     # R-Car V4H
35ced52c6eSDuy Nguyen              - renesas,r8a779h0-canfd     # R-Car V4M
36e8b98168SGeert Uytterhoeven          - const: renesas,rcar-gen4-canfd # R-Car Gen4
37e8b98168SGeert Uytterhoeven
38e8b98168SGeert Uytterhoeven      - items:
39e8b98168SGeert Uytterhoeven          - enum:
405237ff4eSLad Prabhakar              - renesas,r9a07g043-canfd    # RZ/G2UL and RZ/Five
411aa5a06cSLad Prabhakar              - renesas,r9a07g044-canfd    # RZ/G2{L,LC}
42c205cac4SLad Prabhakar              - renesas,r9a07g054-canfd    # RZ/V2L
431aa5a06cSLad Prabhakar          - const: renesas,rzg2l-canfd     # RZ/G2L family
441aa5a06cSLad Prabhakar
45*e623c6e5SBiju Das      - const: renesas,r9a09g047-canfd     # RZ/G3E
46*e623c6e5SBiju Das
478a5e7d19SGeert Uytterhoeven  reg:
488a5e7d19SGeert Uytterhoeven    maxItems: 1
498a5e7d19SGeert Uytterhoeven
50466c8ef7SBiju Das  interrupts:
51466c8ef7SBiju Das    oneOf:
52466c8ef7SBiju Das      - items:
53466c8ef7SBiju Das          - description: Channel interrupt
54466c8ef7SBiju Das          - description: Global interrupt
55466c8ef7SBiju Das      - items:
56466c8ef7SBiju Das          - description: CAN global error interrupt
57466c8ef7SBiju Das          - description: CAN receive FIFO interrupt
58466c8ef7SBiju Das          - description: CAN0 error interrupt
59466c8ef7SBiju Das          - description: CAN0 transmit interrupt
60466c8ef7SBiju Das          - description: CAN0 transmit/receive FIFO receive completion interrupt
61466c8ef7SBiju Das          - description: CAN1 error interrupt
62466c8ef7SBiju Das          - description: CAN1 transmit interrupt
63466c8ef7SBiju Das          - description: CAN1 transmit/receive FIFO receive completion interrupt
64*e623c6e5SBiju Das          - description: CAN2 error interrupt
65*e623c6e5SBiju Das          - description: CAN2 transmit interrupt
66*e623c6e5SBiju Das          - description: CAN2 transmit/receive FIFO receive completion interrupt
67*e623c6e5SBiju Das          - description: CAN3 error interrupt
68*e623c6e5SBiju Das          - description: CAN3 transmit interrupt
69*e623c6e5SBiju Das          - description: CAN3 transmit/receive FIFO receive completion interrupt
70*e623c6e5SBiju Das          - description: CAN4 error interrupt
71*e623c6e5SBiju Das          - description: CAN4 transmit interrupt
72*e623c6e5SBiju Das          - description: CAN4 transmit/receive FIFO receive completion interrupt
73*e623c6e5SBiju Das          - description: CAN5 error interrupt
74*e623c6e5SBiju Das          - description: CAN5 transmit interrupt
75*e623c6e5SBiju Das          - description: CAN5 transmit/receive FIFO receive completion interrupt
76*e623c6e5SBiju Das        minItems: 8
77466c8ef7SBiju Das
78466c8ef7SBiju Das  interrupt-names:
79466c8ef7SBiju Das    oneOf:
80466c8ef7SBiju Das      - items:
81466c8ef7SBiju Das          - const: ch_int
82466c8ef7SBiju Das          - const: g_int
83466c8ef7SBiju Das      - items:
84466c8ef7SBiju Das          - const: g_err
85466c8ef7SBiju Das          - const: g_recc
86466c8ef7SBiju Das          - const: ch0_err
87466c8ef7SBiju Das          - const: ch0_rec
88466c8ef7SBiju Das          - const: ch0_trx
89466c8ef7SBiju Das          - const: ch1_err
90466c8ef7SBiju Das          - const: ch1_rec
91466c8ef7SBiju Das          - const: ch1_trx
92*e623c6e5SBiju Das          - const: ch2_err
93*e623c6e5SBiju Das          - const: ch2_rec
94*e623c6e5SBiju Das          - const: ch2_trx
95*e623c6e5SBiju Das          - const: ch3_err
96*e623c6e5SBiju Das          - const: ch3_rec
97*e623c6e5SBiju Das          - const: ch3_trx
98*e623c6e5SBiju Das          - const: ch4_err
99*e623c6e5SBiju Das          - const: ch4_rec
100*e623c6e5SBiju Das          - const: ch4_trx
101*e623c6e5SBiju Das          - const: ch5_err
102*e623c6e5SBiju Das          - const: ch5_rec
103*e623c6e5SBiju Das          - const: ch5_trx
104*e623c6e5SBiju Das        minItems: 8
1058a5e7d19SGeert Uytterhoeven
1068a5e7d19SGeert Uytterhoeven  clocks:
1078a5e7d19SGeert Uytterhoeven    maxItems: 3
1088a5e7d19SGeert Uytterhoeven
1098a5e7d19SGeert Uytterhoeven  clock-names:
110*e623c6e5SBiju Das    oneOf:
111*e623c6e5SBiju Das      - items:
1128a5e7d19SGeert Uytterhoeven          - const: fck
1138a5e7d19SGeert Uytterhoeven          - const: canfd
1148a5e7d19SGeert Uytterhoeven          - const: can_clk
115*e623c6e5SBiju Das      - items:
116*e623c6e5SBiju Das          - const: fck
117*e623c6e5SBiju Das          - const: ram_clk
118*e623c6e5SBiju Das          - const: can_clk
1198a5e7d19SGeert Uytterhoeven
1208a5e7d19SGeert Uytterhoeven  power-domains:
1218a5e7d19SGeert Uytterhoeven    maxItems: 1
1228a5e7d19SGeert Uytterhoeven
1231aa5a06cSLad Prabhakar  resets: true
1248a5e7d19SGeert Uytterhoeven
1258a5e7d19SGeert Uytterhoeven  renesas,no-can-fd:
1268a5e7d19SGeert Uytterhoeven    $ref: /schemas/types.yaml#/definitions/flag
1278a5e7d19SGeert Uytterhoeven    description:
1288a5e7d19SGeert Uytterhoeven      The controller can operate in either CAN FD only mode (default) or
129e8b98168SGeert Uytterhoeven      Classical CAN only mode.  The mode is global to all channels.
1308a5e7d19SGeert Uytterhoeven      Specify this property to put the controller in Classical CAN only mode.
1318a5e7d19SGeert Uytterhoeven
1328a5e7d19SGeert Uytterhoeven  assigned-clocks:
1338a5e7d19SGeert Uytterhoeven    description:
1348a5e7d19SGeert Uytterhoeven      Reference to the CANFD clock.  The CANFD clock is a div6 clock and can be
1358a5e7d19SGeert Uytterhoeven      used by both CAN (if present) and CAN FD controllers at the same time.
1368a5e7d19SGeert Uytterhoeven      It needs to be scaled to maximum frequency if any of these controllers
1378a5e7d19SGeert Uytterhoeven      use it.
1388a5e7d19SGeert Uytterhoeven
1398a5e7d19SGeert Uytterhoeven  assigned-clock-rates:
1408a5e7d19SGeert Uytterhoeven    description: Maximum frequency of the CANFD clock.
1418a5e7d19SGeert Uytterhoeven
1428a5e7d19SGeert UytterhoevenpatternProperties:
1433abcc01cSGeert Uytterhoeven  "^channel[0-7]$":
1448a5e7d19SGeert Uytterhoeven    type: object
1458a5e7d19SGeert Uytterhoeven    description:
1463abcc01cSGeert Uytterhoeven      The controller supports multiple channels and each is represented as a
1473abcc01cSGeert Uytterhoeven      child node.  Each channel can be enabled/disabled individually.
1483abcc01cSGeert Uytterhoeven
149a707d44dSGeert Uytterhoeven    properties:
150a707d44dSGeert Uytterhoeven      phys:
151a707d44dSGeert Uytterhoeven        maxItems: 1
152a707d44dSGeert Uytterhoeven
1533abcc01cSGeert Uytterhoeven    additionalProperties: false
1548a5e7d19SGeert Uytterhoeven
1558a5e7d19SGeert Uytterhoevenrequired:
1568a5e7d19SGeert Uytterhoeven  - compatible
1578a5e7d19SGeert Uytterhoeven  - reg
1588a5e7d19SGeert Uytterhoeven  - interrupts
15948b171dbSGeert Uytterhoeven  - interrupt-names
1608a5e7d19SGeert Uytterhoeven  - clocks
1618a5e7d19SGeert Uytterhoeven  - clock-names
1628a5e7d19SGeert Uytterhoeven  - power-domains
1638a5e7d19SGeert Uytterhoeven  - resets
1648a5e7d19SGeert Uytterhoeven  - assigned-clocks
1658a5e7d19SGeert Uytterhoeven  - assigned-clock-rates
1668a5e7d19SGeert Uytterhoeven  - channel0
1678a5e7d19SGeert Uytterhoeven  - channel1
1688a5e7d19SGeert Uytterhoeven
1693abcc01cSGeert UytterhoevenallOf:
1703abcc01cSGeert Uytterhoeven  - $ref: can-controller.yaml#
1713abcc01cSGeert Uytterhoeven
1723abcc01cSGeert Uytterhoeven  - if:
1731aa5a06cSLad Prabhakar      properties:
1741aa5a06cSLad Prabhakar        compatible:
1751aa5a06cSLad Prabhakar          contains:
1761aa5a06cSLad Prabhakar            enum:
1771aa5a06cSLad Prabhakar              - renesas,rzg2l-canfd
1781aa5a06cSLad Prabhakar    then:
1791aa5a06cSLad Prabhakar      properties:
1801aa5a06cSLad Prabhakar        interrupts:
181466c8ef7SBiju Das          maxItems: 8
1821aa5a06cSLad Prabhakar
1831aa5a06cSLad Prabhakar        interrupt-names:
184466c8ef7SBiju Das          maxItems: 8
1851aa5a06cSLad Prabhakar
1861aa5a06cSLad Prabhakar        resets:
187466c8ef7SBiju Das          minItems: 2
1881aa5a06cSLad Prabhakar          maxItems: 2
1891aa5a06cSLad Prabhakar
1901aa5a06cSLad Prabhakar        reset-names:
191466c8ef7SBiju Das          minItems: 2
192466c8ef7SBiju Das          maxItems: 2
1931aa5a06cSLad Prabhakar
1941aa5a06cSLad Prabhakar      required:
1951aa5a06cSLad Prabhakar        - reset-names
196466c8ef7SBiju Das
197466c8ef7SBiju Das  - if:
198466c8ef7SBiju Das      properties:
199466c8ef7SBiju Das        compatible:
200466c8ef7SBiju Das          contains:
201466c8ef7SBiju Das            enum:
202466c8ef7SBiju Das              - renesas,rcar-gen3-canfd
203466c8ef7SBiju Das              - renesas,rcar-gen4-canfd
204466c8ef7SBiju Das    then:
2051aa5a06cSLad Prabhakar      properties:
2061aa5a06cSLad Prabhakar        interrupts:
207466c8ef7SBiju Das          minItems: 2
208466c8ef7SBiju Das          maxItems: 2
2091aa5a06cSLad Prabhakar
2101aa5a06cSLad Prabhakar        interrupt-names:
211466c8ef7SBiju Das          minItems: 2
212466c8ef7SBiju Das          maxItems: 2
2131aa5a06cSLad Prabhakar
2141aa5a06cSLad Prabhakar        resets:
2151aa5a06cSLad Prabhakar          maxItems: 1
2161aa5a06cSLad Prabhakar
2173abcc01cSGeert Uytterhoeven  - if:
218ced52c6eSDuy Nguyen      properties:
219ced52c6eSDuy Nguyen        compatible:
220ced52c6eSDuy Nguyen          contains:
221*e623c6e5SBiju Das            const: renesas,r9a09g047-canfd
222*e623c6e5SBiju Das    then:
223*e623c6e5SBiju Das      properties:
224*e623c6e5SBiju Das        interrupts:
225*e623c6e5SBiju Das          minItems: 20
226*e623c6e5SBiju Das
227*e623c6e5SBiju Das        interrupt-names:
228*e623c6e5SBiju Das          minItems: 20
229*e623c6e5SBiju Das
230*e623c6e5SBiju Das        resets:
231*e623c6e5SBiju Das          minItems: 2
232*e623c6e5SBiju Das          maxItems: 2
233*e623c6e5SBiju Das
234*e623c6e5SBiju Das        reset-names:
235*e623c6e5SBiju Das          minItems: 2
236*e623c6e5SBiju Das          maxItems: 2
237*e623c6e5SBiju Das
238*e623c6e5SBiju Das      required:
239*e623c6e5SBiju Das        - reset-names
240*e623c6e5SBiju Das
241*e623c6e5SBiju Das  - if:
242*e623c6e5SBiju Das      properties:
243*e623c6e5SBiju Das        compatible:
244*e623c6e5SBiju Das          contains:
245466c8ef7SBiju Das            enum:
246466c8ef7SBiju Das              - renesas,rcar-gen3-canfd
247466c8ef7SBiju Das              - renesas,rzg2l-canfd
248466c8ef7SBiju Das    then:
249466c8ef7SBiju Das      patternProperties:
250466c8ef7SBiju Das        "^channel[2-7]$": false
251466c8ef7SBiju Das
252466c8ef7SBiju Das  - if:
253466c8ef7SBiju Das      properties:
254466c8ef7SBiju Das        compatible:
255466c8ef7SBiju Das          contains:
256ced52c6eSDuy Nguyen            const: renesas,r8a779h0-canfd
257ced52c6eSDuy Nguyen    then:
258ced52c6eSDuy Nguyen      patternProperties:
25951f6fc9eSBiju Das        "^channel[4-7]$": false
2603abcc01cSGeert Uytterhoeven
261*e623c6e5SBiju Das  - if:
262*e623c6e5SBiju Das      properties:
263*e623c6e5SBiju Das        compatible:
264*e623c6e5SBiju Das          contains:
265*e623c6e5SBiju Das            const: renesas,r9a09g047-canfd
266*e623c6e5SBiju Das    then:
267*e623c6e5SBiju Das      patternProperties:
268*e623c6e5SBiju Das        "^channel[6-7]$": false
269*e623c6e5SBiju Das
2708a5e7d19SGeert UytterhoevenunevaluatedProperties: false
2718a5e7d19SGeert Uytterhoeven
2728a5e7d19SGeert Uytterhoevenexamples:
2738a5e7d19SGeert Uytterhoeven  - |
2748a5e7d19SGeert Uytterhoeven    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
2758a5e7d19SGeert Uytterhoeven    #include <dt-bindings/interrupt-controller/arm-gic.h>
2768a5e7d19SGeert Uytterhoeven    #include <dt-bindings/power/r8a7795-sysc.h>
2778a5e7d19SGeert Uytterhoeven
2788a5e7d19SGeert Uytterhoeven    canfd: can@e66c0000 {
2798a5e7d19SGeert Uytterhoeven            compatible = "renesas,r8a7795-canfd",
2808a5e7d19SGeert Uytterhoeven                         "renesas,rcar-gen3-canfd";
2818a5e7d19SGeert Uytterhoeven            reg = <0xe66c0000 0x8000>;
2828a5e7d19SGeert Uytterhoeven            interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
2838a5e7d19SGeert Uytterhoeven                         <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
28448b171dbSGeert Uytterhoeven            interrupt-names = "ch_int", "g_int";
2858a5e7d19SGeert Uytterhoeven            clocks = <&cpg CPG_MOD 914>,
2868a5e7d19SGeert Uytterhoeven                     <&cpg CPG_CORE R8A7795_CLK_CANFD>,
2878a5e7d19SGeert Uytterhoeven                     <&can_clk>;
2888a5e7d19SGeert Uytterhoeven            clock-names = "fck", "canfd", "can_clk";
2898a5e7d19SGeert Uytterhoeven            assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>;
2908a5e7d19SGeert Uytterhoeven            assigned-clock-rates = <40000000>;
2918a5e7d19SGeert Uytterhoeven            power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
2928a5e7d19SGeert Uytterhoeven            resets = <&cpg 914>;
2938a5e7d19SGeert Uytterhoeven
2948a5e7d19SGeert Uytterhoeven            channel0 {
2958a5e7d19SGeert Uytterhoeven            };
2968a5e7d19SGeert Uytterhoeven
2978a5e7d19SGeert Uytterhoeven            channel1 {
2988a5e7d19SGeert Uytterhoeven            };
2998a5e7d19SGeert Uytterhoeven    };
300