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
7title: Renesas R-Car CAN FD Controller
8
9maintainers:
10  - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
11
12allOf:
13  - $ref: can-controller.yaml#
14
15properties:
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  reg:
34    maxItems: 1
35
36  interrupts:
37    items:
38      - description: Channel interrupt
39      - description: Global interrupt
40
41  clocks:
42    maxItems: 3
43
44  clock-names:
45    items:
46      - const: fck
47      - const: canfd
48      - const: can_clk
49
50  power-domains:
51    maxItems: 1
52
53  resets:
54    maxItems: 1
55
56  renesas,no-can-fd:
57    $ref: /schemas/types.yaml#/definitions/flag
58    description:
59      The controller can operate in either CAN FD only mode (default) or
60      Classical CAN only mode.  The mode is global to both the channels.
61      Specify this property to put the controller in Classical CAN only mode.
62
63  assigned-clocks:
64    description:
65      Reference to the CANFD clock.  The CANFD clock is a div6 clock and can be
66      used by both CAN (if present) and CAN FD controllers at the same time.
67      It needs to be scaled to maximum frequency if any of these controllers
68      use it.
69
70  assigned-clock-rates:
71    description: Maximum frequency of the CANFD clock.
72
73patternProperties:
74  "^channel[01]$":
75    type: object
76    description:
77      The controller supports two channels and each is represented as a child
78      node.  Each child node supports the "status" property only, which
79      is used to enable/disable the respective channel.
80
81required:
82  - compatible
83  - reg
84  - interrupts
85  - clocks
86  - clock-names
87  - power-domains
88  - resets
89  - assigned-clocks
90  - assigned-clock-rates
91  - channel0
92  - channel1
93
94unevaluatedProperties: false
95
96examples:
97  - |
98    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
99    #include <dt-bindings/interrupt-controller/arm-gic.h>
100    #include <dt-bindings/power/r8a7795-sysc.h>
101
102    canfd: can@e66c0000 {
103            compatible = "renesas,r8a7795-canfd",
104                         "renesas,rcar-gen3-canfd";
105            reg = <0xe66c0000 0x8000>;
106            interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
107                         <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
108            clocks = <&cpg CPG_MOD 914>,
109                     <&cpg CPG_CORE R8A7795_CLK_CANFD>,
110                     <&can_clk>;
111            clock-names = "fck", "canfd", "can_clk";
112            assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>;
113            assigned-clock-rates = <40000000>;
114            power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
115            resets = <&cpg 914>;
116
117            channel0 {
118            };
119
120            channel1 {
121            };
122    };
123