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