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/xilinx,can.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title:
8  Xilinx Axi CAN/Zynq CANPS controller
9
10maintainers:
11  - Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
12
13properties:
14  compatible:
15    enum:
16      - xlnx,zynq-can-1.0
17      - xlnx,axi-can-1.00.a
18      - xlnx,canfd-1.0
19      - xlnx,canfd-2.0
20
21  reg:
22    maxItems: 1
23
24  interrupts:
25    maxItems: 1
26
27  clocks:
28    minItems: 1
29    maxItems: 2
30
31  clock-names:
32    maxItems: 2
33
34  power-domains:
35    maxItems: 1
36
37  tx-fifo-depth:
38    $ref: /schemas/types.yaml#/definitions/uint32
39    description: CAN Tx fifo depth (Zynq, Axi CAN).
40
41  rx-fifo-depth:
42    $ref: /schemas/types.yaml#/definitions/uint32
43    description: CAN Rx fifo depth (Zynq, Axi CAN, CAN FD in sequential Rx mode)
44
45  tx-mailbox-count:
46    $ref: /schemas/types.yaml#/definitions/uint32
47    description: CAN Tx mailbox buffer count (CAN FD)
48
49required:
50  - compatible
51  - reg
52  - interrupts
53  - clocks
54  - clock-names
55
56unevaluatedProperties: false
57
58allOf:
59  - $ref: can-controller.yaml#
60  - if:
61      properties:
62        compatible:
63          contains:
64            enum:
65              - xlnx,zynq-can-1.0
66
67    then:
68      properties:
69        clock-names:
70          items:
71            - const: can_clk
72            - const: pclk
73      required:
74        - tx-fifo-depth
75        - rx-fifo-depth
76
77  - if:
78      properties:
79        compatible:
80          contains:
81            enum:
82              - xlnx,axi-can-1.00.a
83
84    then:
85      properties:
86        clock-names:
87          items:
88            - const: can_clk
89            - const: s_axi_aclk
90      required:
91        - tx-fifo-depth
92        - rx-fifo-depth
93
94  - if:
95      properties:
96        compatible:
97          contains:
98            enum:
99              - xlnx,canfd-1.0
100              - xlnx,canfd-2.0
101
102    then:
103      properties:
104        clock-names:
105          items:
106            - const: can_clk
107            - const: s_axi_aclk
108      required:
109        - tx-mailbox-count
110        - rx-fifo-depth
111
112examples:
113  - |
114    #include <dt-bindings/interrupt-controller/arm-gic.h>
115
116    can@e0008000 {
117        compatible = "xlnx,zynq-can-1.0";
118        reg = <0xe0008000 0x1000>;
119        clocks = <&clkc 19>, <&clkc 36>;
120        clock-names = "can_clk", "pclk";
121        interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
122        interrupt-parent = <&intc>;
123        tx-fifo-depth = <0x40>;
124        rx-fifo-depth = <0x40>;
125    };
126
127  - |
128    can@40000000 {
129        compatible = "xlnx,axi-can-1.00.a";
130        reg = <0x40000000 0x10000>;
131        clocks = <&clkc 0>, <&clkc 1>;
132        clock-names = "can_clk", "s_axi_aclk";
133        interrupt-parent = <&intc>;
134        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
135        tx-fifo-depth = <0x40>;
136        rx-fifo-depth = <0x40>;
137    };
138
139  - |
140    can@40000000 {
141        compatible = "xlnx,canfd-1.0";
142        reg = <0x40000000 0x2000>;
143        clocks = <&clkc 0>, <&clkc 1>;
144        clock-names = "can_clk", "s_axi_aclk";
145        interrupt-parent = <&intc>;
146        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
147        tx-mailbox-count = <0x20>;
148        rx-fifo-depth = <0x20>;
149    };
150
151  - |
152    can@ff060000 {
153        compatible = "xlnx,canfd-2.0";
154        reg = <0xff060000 0x6000>;
155        clocks = <&clkc 0>, <&clkc 1>;
156        clock-names = "can_clk", "s_axi_aclk";
157        interrupt-parent = <&intc>;
158        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
159        tx-mailbox-count = <0x20>;
160        rx-fifo-depth = <0x40>;
161    };
162