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 35e8b98168SGeert Uytterhoeven - const: renesas,rcar-gen4-canfd # R-Car Gen4 36e8b98168SGeert Uytterhoeven 37e8b98168SGeert Uytterhoeven - items: 38e8b98168SGeert Uytterhoeven - enum: 395237ff4eSLad Prabhakar - renesas,r9a07g043-canfd # RZ/G2UL and RZ/Five 401aa5a06cSLad Prabhakar - renesas,r9a07g044-canfd # RZ/G2{L,LC} 41c205cac4SLad Prabhakar - renesas,r9a07g054-canfd # RZ/V2L 421aa5a06cSLad Prabhakar - const: renesas,rzg2l-canfd # RZ/G2L family 431aa5a06cSLad Prabhakar 448a5e7d19SGeert Uytterhoeven reg: 458a5e7d19SGeert Uytterhoeven maxItems: 1 468a5e7d19SGeert Uytterhoeven 471aa5a06cSLad Prabhakar interrupts: true 488a5e7d19SGeert Uytterhoeven 498a5e7d19SGeert Uytterhoeven clocks: 508a5e7d19SGeert Uytterhoeven maxItems: 3 518a5e7d19SGeert Uytterhoeven 528a5e7d19SGeert Uytterhoeven clock-names: 538a5e7d19SGeert Uytterhoeven items: 548a5e7d19SGeert Uytterhoeven - const: fck 558a5e7d19SGeert Uytterhoeven - const: canfd 568a5e7d19SGeert Uytterhoeven - const: can_clk 578a5e7d19SGeert Uytterhoeven 588a5e7d19SGeert Uytterhoeven power-domains: 598a5e7d19SGeert Uytterhoeven maxItems: 1 608a5e7d19SGeert Uytterhoeven 611aa5a06cSLad Prabhakar resets: true 628a5e7d19SGeert Uytterhoeven 638a5e7d19SGeert Uytterhoeven renesas,no-can-fd: 648a5e7d19SGeert Uytterhoeven $ref: /schemas/types.yaml#/definitions/flag 658a5e7d19SGeert Uytterhoeven description: 668a5e7d19SGeert Uytterhoeven The controller can operate in either CAN FD only mode (default) or 67e8b98168SGeert Uytterhoeven Classical CAN only mode. The mode is global to all channels. 688a5e7d19SGeert Uytterhoeven Specify this property to put the controller in Classical CAN only mode. 698a5e7d19SGeert Uytterhoeven 708a5e7d19SGeert Uytterhoeven assigned-clocks: 718a5e7d19SGeert Uytterhoeven description: 728a5e7d19SGeert Uytterhoeven Reference to the CANFD clock. The CANFD clock is a div6 clock and can be 738a5e7d19SGeert Uytterhoeven used by both CAN (if present) and CAN FD controllers at the same time. 748a5e7d19SGeert Uytterhoeven It needs to be scaled to maximum frequency if any of these controllers 758a5e7d19SGeert Uytterhoeven use it. 768a5e7d19SGeert Uytterhoeven 778a5e7d19SGeert Uytterhoeven assigned-clock-rates: 788a5e7d19SGeert Uytterhoeven description: Maximum frequency of the CANFD clock. 798a5e7d19SGeert Uytterhoeven 808a5e7d19SGeert UytterhoevenpatternProperties: 813abcc01cSGeert Uytterhoeven "^channel[0-7]$": 828a5e7d19SGeert Uytterhoeven type: object 838a5e7d19SGeert Uytterhoeven description: 843abcc01cSGeert Uytterhoeven The controller supports multiple channels and each is represented as a 853abcc01cSGeert Uytterhoeven child node. Each channel can be enabled/disabled individually. 863abcc01cSGeert Uytterhoeven 87*a707d44dSGeert Uytterhoeven properties: 88*a707d44dSGeert Uytterhoeven phys: 89*a707d44dSGeert Uytterhoeven maxItems: 1 90*a707d44dSGeert Uytterhoeven 913abcc01cSGeert Uytterhoeven additionalProperties: false 928a5e7d19SGeert Uytterhoeven 938a5e7d19SGeert Uytterhoevenrequired: 948a5e7d19SGeert Uytterhoeven - compatible 958a5e7d19SGeert Uytterhoeven - reg 968a5e7d19SGeert Uytterhoeven - interrupts 9748b171dbSGeert Uytterhoeven - interrupt-names 988a5e7d19SGeert Uytterhoeven - clocks 998a5e7d19SGeert Uytterhoeven - clock-names 1008a5e7d19SGeert Uytterhoeven - power-domains 1018a5e7d19SGeert Uytterhoeven - resets 1028a5e7d19SGeert Uytterhoeven - assigned-clocks 1038a5e7d19SGeert Uytterhoeven - assigned-clock-rates 1048a5e7d19SGeert Uytterhoeven - channel0 1058a5e7d19SGeert Uytterhoeven - channel1 1068a5e7d19SGeert Uytterhoeven 1073abcc01cSGeert UytterhoevenallOf: 1083abcc01cSGeert Uytterhoeven - $ref: can-controller.yaml# 1093abcc01cSGeert Uytterhoeven 1103abcc01cSGeert Uytterhoeven - if: 1111aa5a06cSLad Prabhakar properties: 1121aa5a06cSLad Prabhakar compatible: 1131aa5a06cSLad Prabhakar contains: 1141aa5a06cSLad Prabhakar enum: 1151aa5a06cSLad Prabhakar - renesas,rzg2l-canfd 1161aa5a06cSLad Prabhakar then: 1171aa5a06cSLad Prabhakar properties: 1181aa5a06cSLad Prabhakar interrupts: 1191aa5a06cSLad Prabhakar items: 1201aa5a06cSLad Prabhakar - description: CAN global error interrupt 1211aa5a06cSLad Prabhakar - description: CAN receive FIFO interrupt 1221aa5a06cSLad Prabhakar - description: CAN0 error interrupt 1231aa5a06cSLad Prabhakar - description: CAN0 transmit interrupt 1241aa5a06cSLad Prabhakar - description: CAN0 transmit/receive FIFO receive completion interrupt 1251aa5a06cSLad Prabhakar - description: CAN1 error interrupt 1261aa5a06cSLad Prabhakar - description: CAN1 transmit interrupt 1271aa5a06cSLad Prabhakar - description: CAN1 transmit/receive FIFO receive completion interrupt 1281aa5a06cSLad Prabhakar 1291aa5a06cSLad Prabhakar interrupt-names: 1301aa5a06cSLad Prabhakar items: 1311aa5a06cSLad Prabhakar - const: g_err 1321aa5a06cSLad Prabhakar - const: g_recc 1331aa5a06cSLad Prabhakar - const: ch0_err 1341aa5a06cSLad Prabhakar - const: ch0_rec 1351aa5a06cSLad Prabhakar - const: ch0_trx 1361aa5a06cSLad Prabhakar - const: ch1_err 1371aa5a06cSLad Prabhakar - const: ch1_rec 1381aa5a06cSLad Prabhakar - const: ch1_trx 1391aa5a06cSLad Prabhakar 1401aa5a06cSLad Prabhakar resets: 1411aa5a06cSLad Prabhakar maxItems: 2 1421aa5a06cSLad Prabhakar 1431aa5a06cSLad Prabhakar reset-names: 1441aa5a06cSLad Prabhakar items: 1451aa5a06cSLad Prabhakar - const: rstp_n 1461aa5a06cSLad Prabhakar - const: rstc_n 1471aa5a06cSLad Prabhakar 1481aa5a06cSLad Prabhakar required: 1491aa5a06cSLad Prabhakar - reset-names 1501aa5a06cSLad Prabhakar else: 1511aa5a06cSLad Prabhakar properties: 1521aa5a06cSLad Prabhakar interrupts: 1531aa5a06cSLad Prabhakar items: 1541aa5a06cSLad Prabhakar - description: Channel interrupt 1551aa5a06cSLad Prabhakar - description: Global interrupt 1561aa5a06cSLad Prabhakar 1571aa5a06cSLad Prabhakar interrupt-names: 1581aa5a06cSLad Prabhakar items: 1591aa5a06cSLad Prabhakar - const: ch_int 1601aa5a06cSLad Prabhakar - const: g_int 1611aa5a06cSLad Prabhakar 1621aa5a06cSLad Prabhakar resets: 1631aa5a06cSLad Prabhakar maxItems: 1 1641aa5a06cSLad Prabhakar 1653abcc01cSGeert Uytterhoeven - if: 1663abcc01cSGeert Uytterhoeven not: 1673abcc01cSGeert Uytterhoeven properties: 1683abcc01cSGeert Uytterhoeven compatible: 1693abcc01cSGeert Uytterhoeven contains: 170e8b98168SGeert Uytterhoeven const: renesas,rcar-gen4-canfd 1713abcc01cSGeert Uytterhoeven then: 1723abcc01cSGeert Uytterhoeven patternProperties: 1733abcc01cSGeert Uytterhoeven "^channel[2-7]$": false 1743abcc01cSGeert Uytterhoeven 1758a5e7d19SGeert UytterhoevenunevaluatedProperties: false 1768a5e7d19SGeert Uytterhoeven 1778a5e7d19SGeert Uytterhoevenexamples: 1788a5e7d19SGeert Uytterhoeven - | 1798a5e7d19SGeert Uytterhoeven #include <dt-bindings/clock/r8a7795-cpg-mssr.h> 1808a5e7d19SGeert Uytterhoeven #include <dt-bindings/interrupt-controller/arm-gic.h> 1818a5e7d19SGeert Uytterhoeven #include <dt-bindings/power/r8a7795-sysc.h> 1828a5e7d19SGeert Uytterhoeven 1838a5e7d19SGeert Uytterhoeven canfd: can@e66c0000 { 1848a5e7d19SGeert Uytterhoeven compatible = "renesas,r8a7795-canfd", 1858a5e7d19SGeert Uytterhoeven "renesas,rcar-gen3-canfd"; 1868a5e7d19SGeert Uytterhoeven reg = <0xe66c0000 0x8000>; 1878a5e7d19SGeert Uytterhoeven interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>, 1888a5e7d19SGeert Uytterhoeven <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 18948b171dbSGeert Uytterhoeven interrupt-names = "ch_int", "g_int"; 1908a5e7d19SGeert Uytterhoeven clocks = <&cpg CPG_MOD 914>, 1918a5e7d19SGeert Uytterhoeven <&cpg CPG_CORE R8A7795_CLK_CANFD>, 1928a5e7d19SGeert Uytterhoeven <&can_clk>; 1938a5e7d19SGeert Uytterhoeven clock-names = "fck", "canfd", "can_clk"; 1948a5e7d19SGeert Uytterhoeven assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>; 1958a5e7d19SGeert Uytterhoeven assigned-clock-rates = <40000000>; 1968a5e7d19SGeert Uytterhoeven power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 1978a5e7d19SGeert Uytterhoeven resets = <&cpg 914>; 1988a5e7d19SGeert Uytterhoeven 1998a5e7d19SGeert Uytterhoeven channel0 { 2008a5e7d19SGeert Uytterhoeven }; 2018a5e7d19SGeert Uytterhoeven 2028a5e7d19SGeert Uytterhoeven channel1 { 2038a5e7d19SGeert Uytterhoeven }; 2048a5e7d19SGeert Uytterhoeven }; 205