blob: c4887522e8fe97c3947357b4dbd4ecf20ee8100a [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/can/bosch,m_can.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Bosch MCAN controller
8
9description: Bosch MCAN controller for CAN bus
10
11maintainers:
12 - Chandrasekar Ramakrishnan <rcsekar@samsung.com>
13
14allOf:
15 - $ref: can-controller.yaml#
16
17properties:
18 compatible:
19 const: bosch,m_can
20
21 reg:
22 items:
23 - description: M_CAN registers map
24 - description: message RAM
25
26 reg-names:
27 items:
28 - const: m_can
29 - const: message_ram
30
31 interrupts:
32 items:
33 - description: interrupt line0
34 - description: interrupt line1
35 minItems: 1
36
37 interrupt-names:
38 items:
39 - const: int0
40 - const: int1
41 minItems: 1
42
43 clocks:
44 items:
45 - description: peripheral clock
46 - description: bus clock
47
48 clock-names:
49 items:
50 - const: hclk
51 - const: cclk
52
53 bosch,mram-cfg:
54 description: |
55 Message RAM configuration data.
56 Multiple M_CAN instances can share the same Message RAM
57 and each element(e.g Rx FIFO or Tx Buffer and etc) number
58 in Message RAM is also configurable, so this property is
59 telling driver how the shared or private Message RAM are
60 used by this M_CAN controller.
61
62 The format should be as follows:
63 <offset sidf_elems xidf_elems rxf0_elems rxf1_elems rxb_elems txe_elems txb_elems>
64 The 'offset' is an address offset of the Message RAM where
65 the following elements start from. This is usually set to
66 0x0 if you're using a private Message RAM. The remain cells
67 are used to specify how many elements are used for each FIFO/Buffer.
68
69 M_CAN includes the following elements according to user manual:
70 11-bit Filter 0-128 elements / 0-128 words
71 29-bit Filter 0-64 elements / 0-128 words
72 Rx FIFO 0 0-64 elements / 0-1152 words
73 Rx FIFO 1 0-64 elements / 0-1152 words
74 Rx Buffers 0-64 elements / 0-1152 words
75 Tx Event FIFO 0-32 elements / 0-64 words
76 Tx Buffers 0-32 elements / 0-576 words
77
78 Please refer to 2.4.1 Message RAM Configuration in Bosch
79 M_CAN user manual for details.
80 $ref: /schemas/types.yaml#/definitions/int32-array
81 items:
82 - description: The 'offset' is an address offset of the Message RAM where
83 the following elements start from. This is usually set to 0x0 if
84 you're using a private Message RAM.
85 default: 0
86 - description: 11-bit Filter 0-128 elements / 0-128 words
87 minimum: 0
88 maximum: 128
89 - description: 29-bit Filter 0-64 elements / 0-128 words
90 minimum: 0
91 maximum: 64
92 - description: Rx FIFO 0 0-64 elements / 0-1152 words
93 minimum: 0
94 maximum: 64
95 - description: Rx FIFO 1 0-64 elements / 0-1152 words
96 minimum: 0
97 maximum: 64
98 - description: Rx Buffers 0-64 elements / 0-1152 words
99 minimum: 0
100 maximum: 64
101 - description: Tx Event FIFO 0-32 elements / 0-64 words
102 minimum: 0
103 maximum: 32
104 - description: Tx Buffers 0-32 elements / 0-576 words
105 minimum: 0
106 maximum: 32
107 minItems: 1
108
109 power-domains:
110 description:
111 Power domain provider node and an args specifier containing
112 the can device id value.
113 maxItems: 1
114
115 can-transceiver:
116 $ref: can-transceiver.yaml#
117
118 phys:
119 maxItems: 1
120
Tom Rini762f85b2024-07-20 11:15:10 -0600121 access-controllers:
122 minItems: 1
123 maxItems: 2
124
Tom Rini53633a82024-02-29 12:33:36 -0500125required:
126 - compatible
127 - reg
128 - reg-names
129 - clocks
130 - clock-names
131 - bosch,mram-cfg
132
133unevaluatedProperties: false
134
135examples:
136 - |
137 // Example with interrupts
138 #include <dt-bindings/clock/imx6sx-clock.h>
139 can@20e8000 {
140 compatible = "bosch,m_can";
141 reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
142 reg-names = "m_can", "message_ram";
143 interrupts = <0 114 0x04>, <0 114 0x04>;
144 interrupt-names = "int0", "int1";
145 clocks = <&clks IMX6SX_CLK_CANFD>,
146 <&clks IMX6SX_CLK_CANFD>;
147 clock-names = "hclk", "cclk";
148 bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
149
150 can-transceiver {
151 max-bitrate = <5000000>;
152 };
153 };
154
155 - |
156 // Example with timer polling
157 #include <dt-bindings/clock/imx6sx-clock.h>
158 can@20e8000 {
159 compatible = "bosch,m_can";
160 reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
161 reg-names = "m_can", "message_ram";
162 clocks = <&clks IMX6SX_CLK_CANFD>,
163 <&clks IMX6SX_CLK_CANFD>;
164 clock-names = "hclk", "cclk";
165 bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
166
167 can-transceiver {
168 max-bitrate = <5000000>;
169 };
170 };
171
172...