xref: /freebsd/sys/contrib/device-tree/Bindings/net/can/xilinx,can.yaml (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1c9ccf3a3SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c9ccf3a3SEmmanuel Vadot%YAML 1.2
3c9ccf3a3SEmmanuel Vadot---
4c9ccf3a3SEmmanuel Vadot$id: http://devicetree.org/schemas/net/can/xilinx,can.yaml#
5c9ccf3a3SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c9ccf3a3SEmmanuel Vadot
7c9ccf3a3SEmmanuel Vadottitle:
8*0e8011faSEmmanuel Vadot  Xilinx CAN and CANFD controller
9c9ccf3a3SEmmanuel Vadot
10c9ccf3a3SEmmanuel Vadotmaintainers:
11c9ccf3a3SEmmanuel Vadot  - Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
12c9ccf3a3SEmmanuel Vadot
13c9ccf3a3SEmmanuel Vadotproperties:
14c9ccf3a3SEmmanuel Vadot  compatible:
15c9ccf3a3SEmmanuel Vadot    enum:
16c9ccf3a3SEmmanuel Vadot      - xlnx,zynq-can-1.0
17c9ccf3a3SEmmanuel Vadot      - xlnx,axi-can-1.00.a
18c9ccf3a3SEmmanuel Vadot      - xlnx,canfd-1.0
19c9ccf3a3SEmmanuel Vadot      - xlnx,canfd-2.0
20c9ccf3a3SEmmanuel Vadot
21c9ccf3a3SEmmanuel Vadot  reg:
22c9ccf3a3SEmmanuel Vadot    maxItems: 1
23c9ccf3a3SEmmanuel Vadot
24c9ccf3a3SEmmanuel Vadot  interrupts:
25c9ccf3a3SEmmanuel Vadot    maxItems: 1
26c9ccf3a3SEmmanuel Vadot
27c9ccf3a3SEmmanuel Vadot  clocks:
28c9ccf3a3SEmmanuel Vadot    minItems: 1
29c9ccf3a3SEmmanuel Vadot    maxItems: 2
30c9ccf3a3SEmmanuel Vadot
31c9ccf3a3SEmmanuel Vadot  clock-names:
32c9ccf3a3SEmmanuel Vadot    maxItems: 2
33c9ccf3a3SEmmanuel Vadot
34c9ccf3a3SEmmanuel Vadot  power-domains:
35c9ccf3a3SEmmanuel Vadot    maxItems: 1
36c9ccf3a3SEmmanuel Vadot
37c9ccf3a3SEmmanuel Vadot  tx-fifo-depth:
38fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
39c9ccf3a3SEmmanuel Vadot    description: CAN Tx fifo depth (Zynq, Axi CAN).
40c9ccf3a3SEmmanuel Vadot
41c9ccf3a3SEmmanuel Vadot  rx-fifo-depth:
42fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
43c9ccf3a3SEmmanuel Vadot    description: CAN Rx fifo depth (Zynq, Axi CAN, CAN FD in sequential Rx mode)
44c9ccf3a3SEmmanuel Vadot
45c9ccf3a3SEmmanuel Vadot  tx-mailbox-count:
46fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
47c9ccf3a3SEmmanuel Vadot    description: CAN Tx mailbox buffer count (CAN FD)
48c9ccf3a3SEmmanuel Vadot
49aa1a8ff2SEmmanuel Vadot  resets:
50aa1a8ff2SEmmanuel Vadot    maxItems: 1
51aa1a8ff2SEmmanuel Vadot
5201950c46SEmmanuel Vadot  xlnx,has-ecc:
5301950c46SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
5401950c46SEmmanuel Vadot    description: CAN TX_OL, TX_TL and RX FIFOs have ECC support(AXI CAN)
5501950c46SEmmanuel Vadot
56c9ccf3a3SEmmanuel Vadotrequired:
57c9ccf3a3SEmmanuel Vadot  - compatible
58c9ccf3a3SEmmanuel Vadot  - reg
59c9ccf3a3SEmmanuel Vadot  - interrupts
60c9ccf3a3SEmmanuel Vadot  - clocks
61c9ccf3a3SEmmanuel Vadot  - clock-names
62c9ccf3a3SEmmanuel Vadot
63c9ccf3a3SEmmanuel VadotunevaluatedProperties: false
64c9ccf3a3SEmmanuel Vadot
65c9ccf3a3SEmmanuel VadotallOf:
66c9ccf3a3SEmmanuel Vadot  - $ref: can-controller.yaml#
67c9ccf3a3SEmmanuel Vadot  - if:
68c9ccf3a3SEmmanuel Vadot      properties:
69c9ccf3a3SEmmanuel Vadot        compatible:
70c9ccf3a3SEmmanuel Vadot          contains:
71c9ccf3a3SEmmanuel Vadot            enum:
72c9ccf3a3SEmmanuel Vadot              - xlnx,zynq-can-1.0
73c9ccf3a3SEmmanuel Vadot
74c9ccf3a3SEmmanuel Vadot    then:
75c9ccf3a3SEmmanuel Vadot      properties:
76c9ccf3a3SEmmanuel Vadot        clock-names:
77c9ccf3a3SEmmanuel Vadot          items:
78c9ccf3a3SEmmanuel Vadot            - const: can_clk
79c9ccf3a3SEmmanuel Vadot            - const: pclk
80c9ccf3a3SEmmanuel Vadot      required:
81c9ccf3a3SEmmanuel Vadot        - tx-fifo-depth
82c9ccf3a3SEmmanuel Vadot        - rx-fifo-depth
83c9ccf3a3SEmmanuel Vadot
84c9ccf3a3SEmmanuel Vadot  - if:
85c9ccf3a3SEmmanuel Vadot      properties:
86c9ccf3a3SEmmanuel Vadot        compatible:
87c9ccf3a3SEmmanuel Vadot          contains:
88c9ccf3a3SEmmanuel Vadot            enum:
89c9ccf3a3SEmmanuel Vadot              - xlnx,axi-can-1.00.a
90c9ccf3a3SEmmanuel Vadot
91c9ccf3a3SEmmanuel Vadot    then:
92c9ccf3a3SEmmanuel Vadot      properties:
93c9ccf3a3SEmmanuel Vadot        clock-names:
94c9ccf3a3SEmmanuel Vadot          items:
95c9ccf3a3SEmmanuel Vadot            - const: can_clk
96c9ccf3a3SEmmanuel Vadot            - const: s_axi_aclk
97c9ccf3a3SEmmanuel Vadot      required:
98c9ccf3a3SEmmanuel Vadot        - tx-fifo-depth
99c9ccf3a3SEmmanuel Vadot        - rx-fifo-depth
100c9ccf3a3SEmmanuel Vadot
101c9ccf3a3SEmmanuel Vadot  - if:
102c9ccf3a3SEmmanuel Vadot      properties:
103c9ccf3a3SEmmanuel Vadot        compatible:
104c9ccf3a3SEmmanuel Vadot          contains:
105c9ccf3a3SEmmanuel Vadot            enum:
106c9ccf3a3SEmmanuel Vadot              - xlnx,canfd-1.0
107c9ccf3a3SEmmanuel Vadot              - xlnx,canfd-2.0
108c9ccf3a3SEmmanuel Vadot
109c9ccf3a3SEmmanuel Vadot    then:
110c9ccf3a3SEmmanuel Vadot      properties:
111c9ccf3a3SEmmanuel Vadot        clock-names:
112c9ccf3a3SEmmanuel Vadot          items:
113c9ccf3a3SEmmanuel Vadot            - const: can_clk
114c9ccf3a3SEmmanuel Vadot            - const: s_axi_aclk
115c9ccf3a3SEmmanuel Vadot      required:
116c9ccf3a3SEmmanuel Vadot        - tx-mailbox-count
117c9ccf3a3SEmmanuel Vadot        - rx-fifo-depth
118c9ccf3a3SEmmanuel Vadot
119c9ccf3a3SEmmanuel Vadotexamples:
120c9ccf3a3SEmmanuel Vadot  - |
121c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
122c9ccf3a3SEmmanuel Vadot
123c9ccf3a3SEmmanuel Vadot    can@e0008000 {
124c9ccf3a3SEmmanuel Vadot        compatible = "xlnx,zynq-can-1.0";
125c9ccf3a3SEmmanuel Vadot        reg = <0xe0008000 0x1000>;
126c9ccf3a3SEmmanuel Vadot        clocks = <&clkc 19>, <&clkc 36>;
127c9ccf3a3SEmmanuel Vadot        clock-names = "can_clk", "pclk";
128c9ccf3a3SEmmanuel Vadot        interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
129c9ccf3a3SEmmanuel Vadot        interrupt-parent = <&intc>;
130c9ccf3a3SEmmanuel Vadot        tx-fifo-depth = <0x40>;
131c9ccf3a3SEmmanuel Vadot        rx-fifo-depth = <0x40>;
132c9ccf3a3SEmmanuel Vadot    };
133c9ccf3a3SEmmanuel Vadot
134c9ccf3a3SEmmanuel Vadot  - |
135c9ccf3a3SEmmanuel Vadot    can@40000000 {
136c9ccf3a3SEmmanuel Vadot        compatible = "xlnx,axi-can-1.00.a";
137c9ccf3a3SEmmanuel Vadot        reg = <0x40000000 0x10000>;
138c9ccf3a3SEmmanuel Vadot        clocks = <&clkc 0>, <&clkc 1>;
139c9ccf3a3SEmmanuel Vadot        clock-names = "can_clk", "s_axi_aclk";
140c9ccf3a3SEmmanuel Vadot        interrupt-parent = <&intc>;
141c9ccf3a3SEmmanuel Vadot        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
142c9ccf3a3SEmmanuel Vadot        tx-fifo-depth = <0x40>;
143c9ccf3a3SEmmanuel Vadot        rx-fifo-depth = <0x40>;
14401950c46SEmmanuel Vadot        xlnx,has-ecc;
145c9ccf3a3SEmmanuel Vadot    };
146c9ccf3a3SEmmanuel Vadot
147c9ccf3a3SEmmanuel Vadot  - |
148c9ccf3a3SEmmanuel Vadot    can@40000000 {
149c9ccf3a3SEmmanuel Vadot        compatible = "xlnx,canfd-1.0";
150c9ccf3a3SEmmanuel Vadot        reg = <0x40000000 0x2000>;
151c9ccf3a3SEmmanuel Vadot        clocks = <&clkc 0>, <&clkc 1>;
152c9ccf3a3SEmmanuel Vadot        clock-names = "can_clk", "s_axi_aclk";
153c9ccf3a3SEmmanuel Vadot        interrupt-parent = <&intc>;
154c9ccf3a3SEmmanuel Vadot        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
155c9ccf3a3SEmmanuel Vadot        tx-mailbox-count = <0x20>;
156c9ccf3a3SEmmanuel Vadot        rx-fifo-depth = <0x20>;
157c9ccf3a3SEmmanuel Vadot    };
158c9ccf3a3SEmmanuel Vadot
159c9ccf3a3SEmmanuel Vadot  - |
160c9ccf3a3SEmmanuel Vadot    can@ff060000 {
161c9ccf3a3SEmmanuel Vadot        compatible = "xlnx,canfd-2.0";
162c9ccf3a3SEmmanuel Vadot        reg = <0xff060000 0x6000>;
163c9ccf3a3SEmmanuel Vadot        clocks = <&clkc 0>, <&clkc 1>;
164c9ccf3a3SEmmanuel Vadot        clock-names = "can_clk", "s_axi_aclk";
165c9ccf3a3SEmmanuel Vadot        interrupt-parent = <&intc>;
166c9ccf3a3SEmmanuel Vadot        interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
167c9ccf3a3SEmmanuel Vadot        tx-mailbox-count = <0x20>;
168c9ccf3a3SEmmanuel Vadot        rx-fifo-depth = <0x40>;
169c9ccf3a3SEmmanuel Vadot    };
170