@@ -18,11 +18,26 @@ description: |
18
18
19
19
properties :
20
20
compatible :
21
- const : xlnx,zynqmp-r5fss
21
+ enum :
22
+ - xlnx,zynqmp-r5fss
23
+ - xlnx,versal-r5fss
24
+ - xlnx,versal-net-r52fss
25
+
26
+ " #address-cells " :
27
+ const : 2
28
+
29
+ " #size-cells " :
30
+ const : 2
31
+
32
+ ranges :
33
+ description : |
34
+ Standard ranges definition providing address translations for
35
+ local R5F TCM address spaces to bus addresses.
22
36
23
37
xlnx,cluster-mode :
24
38
$ref : /schemas/types.yaml#/definitions/uint32
25
39
enum : [0, 1, 2]
40
+ default : 1
26
41
description : |
27
42
The RPU MPCore can operate in split mode (Dual-processor performance), Safety
28
43
lock-step mode(Both RPU cores execute the same code in lock-step,
@@ -36,8 +51,16 @@ properties:
36
51
1: lockstep mode (default)
37
52
2: single cpu mode
38
53
54
+ xlnx,tcm-mode :
55
+ $ref : /schemas/types.yaml#/definitions/uint32
56
+ enum : [0, 1]
57
+ description : |
58
+ Configure RPU TCM
59
+ 0: split mode
60
+ 1: lockstep mode
61
+
39
62
patternProperties :
40
- " ^r5f-[a-f0-9 ]+$ " :
63
+ " ^r(.*)@[0-9a-f ]+$ " :
41
64
type : object
42
65
description : |
43
66
The RPU is located in the Low Power Domain of the Processor Subsystem.
@@ -52,10 +75,22 @@ patternProperties:
52
75
53
76
properties :
54
77
compatible :
55
- const : xlnx,zynqmp-r5f
78
+ enum :
79
+ - xlnx,zynqmp-r5f
80
+ - xlnx,versal-r5f
81
+ - xlnx,versal-net-r52f
82
+
83
+ reg :
84
+ minItems : 1
85
+ maxItems : 4
86
+
87
+ reg-names :
88
+ minItems : 1
89
+ maxItems : 4
56
90
57
91
power-domains :
58
- maxItems : 1
92
+ minItems : 2
93
+ maxItems : 5
59
94
60
95
mboxes :
61
96
minItems : 1
@@ -101,35 +136,235 @@ patternProperties:
101
136
102
137
required :
103
138
- compatible
139
+ - reg
140
+ - reg-names
104
141
- power-domains
105
142
106
- unevaluatedProperties : false
107
-
108
143
required :
109
144
- compatible
145
+ - " #address-cells"
146
+ - " #size-cells"
147
+ - ranges
148
+
149
+ allOf :
150
+ - if :
151
+ properties :
152
+ compatible :
153
+ contains :
154
+ enum :
155
+ - xlnx,versal-net-r52fss
156
+ then :
157
+ properties :
158
+ xlnx,tcm-mode : false
159
+
160
+ patternProperties :
161
+ " ^r52f@[0-9a-f]+$ " :
162
+ type : object
163
+
164
+ properties :
165
+ reg :
166
+ minItems : 1
167
+ items :
168
+ - description : ATCM internal memory
169
+ - description : BTCM internal memory
170
+ - description : CTCM internal memory
171
+
172
+ reg-names :
173
+ minItems : 1
174
+ items :
175
+ - const : atcm0
176
+ - const : btcm0
177
+ - const : ctcm0
178
+
179
+ power-domains :
180
+ minItems : 2
181
+ items :
182
+ - description : RPU core power domain
183
+ - description : ATCM power domain
184
+ - description : BTCM power domain
185
+ - description : CTCM power domain
186
+
187
+ - if :
188
+ properties :
189
+ compatible :
190
+ contains :
191
+ enum :
192
+ - xlnx,zynqmp-r5fss
193
+ - xlnx,versal-r5fss
194
+ then :
195
+ if :
196
+ properties :
197
+ xlnx,cluster-mode :
198
+ enum : [1, 2]
199
+ then :
200
+ properties :
201
+ xlnx,tcm-mode :
202
+ enum : [1]
203
+
204
+ patternProperties :
205
+ " ^r5f@[0-9a-f]+$ " :
206
+ type : object
207
+
208
+ properties :
209
+ reg :
210
+ minItems : 1
211
+ items :
212
+ - description : ATCM internal memory
213
+ - description : BTCM internal memory
214
+ - description : extra ATCM memory in lockstep mode
215
+ - description : extra BTCM memory in lockstep mode
216
+
217
+ reg-names :
218
+ minItems : 1
219
+ items :
220
+ - const : atcm0
221
+ - const : btcm0
222
+ - const : atcm1
223
+ - const : btcm1
224
+
225
+ power-domains :
226
+ minItems : 2
227
+ items :
228
+ - description : RPU core power domain
229
+ - description : ATCM power domain
230
+ - description : BTCM power domain
231
+ - description : second ATCM power domain
232
+ - description : second BTCM power domain
233
+
234
+ required :
235
+ - xlnx,tcm-mode
236
+
237
+ else :
238
+ properties :
239
+ xlnx,tcm-mode :
240
+ enum : [0]
241
+
242
+ patternProperties :
243
+ " ^r5f@[0-9a-f]+$ " :
244
+ type : object
245
+
246
+ properties :
247
+ reg :
248
+ minItems : 1
249
+ items :
250
+ - description : ATCM internal memory
251
+ - description : BTCM internal memory
252
+
253
+ reg-names :
254
+ minItems : 1
255
+ items :
256
+ - const : atcm0
257
+ - const : btcm0
258
+
259
+ power-domains :
260
+ minItems : 2
261
+ items :
262
+ - description : RPU core power domain
263
+ - description : ATCM power domain
264
+ - description : BTCM power domain
265
+
266
+ required :
267
+ - xlnx,tcm-mode
110
268
111
269
additionalProperties : false
112
270
113
271
examples :
114
272
- |
115
- remoteproc {
116
- compatible = "xlnx,zynqmp-r5fss";
117
- xlnx,cluster-mode = <1>;
118
-
119
- r5f-0 {
120
- compatible = "xlnx,zynqmp-r5f";
121
- power-domains = <&zynqmp_firmware 0x7>;
122
- memory-region = <&rproc_0_fw_image>, <&rpu0vdev0buffer>, <&rpu0vdev0vring0>, <&rpu0vdev0vring1>;
123
- mboxes = <&ipi_mailbox_rpu0 0>, <&ipi_mailbox_rpu0 1>;
124
- mbox-names = "tx", "rx";
273
+ #include <dt-bindings/power/xlnx-zynqmp-power.h>
274
+
275
+ // Split mode configuration
276
+ soc {
277
+ #address-cells = <2>;
278
+ #size-cells = <2>;
279
+
280
+ remoteproc@ffe00000 {
281
+ compatible = "xlnx,zynqmp-r5fss";
282
+ xlnx,cluster-mode = <0>;
283
+ xlnx,tcm-mode = <0>;
284
+
285
+ #address-cells = <2>;
286
+ #size-cells = <2>;
287
+ ranges = <0x0 0x0 0x0 0xffe00000 0x0 0x10000>,
288
+ <0x0 0x20000 0x0 0xffe20000 0x0 0x10000>,
289
+ <0x1 0x0 0x0 0xffe90000 0x0 0x10000>,
290
+ <0x1 0x20000 0x0 0xffeb0000 0x0 0x10000>;
291
+
292
+ r5f@0 {
293
+ compatible = "xlnx,zynqmp-r5f";
294
+ reg = <0x0 0x0 0x0 0x10000>, <0x0 0x20000 0x0 0x10000>;
295
+ reg-names = "atcm0", "btcm0";
296
+ power-domains = <&zynqmp_firmware PD_RPU_0>,
297
+ <&zynqmp_firmware PD_R5_0_ATCM>,
298
+ <&zynqmp_firmware PD_R5_0_BTCM>;
299
+ memory-region = <&rproc_0_fw_image>, <&rpu0vdev0buffer>,
300
+ <&rpu0vdev0vring0>, <&rpu0vdev0vring1>;
301
+ mboxes = <&ipi_mailbox_rpu0 0>, <&ipi_mailbox_rpu0 1>;
302
+ mbox-names = "tx", "rx";
303
+ };
304
+
305
+ r5f@1 {
306
+ compatible = "xlnx,zynqmp-r5f";
307
+ reg = <0x1 0x0 0x0 0x10000>, <0x1 0x20000 0x0 0x10000>;
308
+ reg-names = "atcm0", "btcm0";
309
+ power-domains = <&zynqmp_firmware PD_RPU_1>,
310
+ <&zynqmp_firmware PD_R5_1_ATCM>,
311
+ <&zynqmp_firmware PD_R5_1_BTCM>;
312
+ memory-region = <&rproc_1_fw_image>, <&rpu1vdev0buffer>,
313
+ <&rpu1vdev0vring0>, <&rpu1vdev0vring1>;
314
+ mboxes = <&ipi_mailbox_rpu1 0>, <&ipi_mailbox_rpu1 1>;
315
+ mbox-names = "tx", "rx";
316
+ };
125
317
};
318
+ };
319
+
320
+ - |
321
+ //Lockstep configuration
322
+ soc {
323
+ #address-cells = <2>;
324
+ #size-cells = <2>;
325
+
326
+ remoteproc@ffe00000 {
327
+ compatible = "xlnx,zynqmp-r5fss";
328
+ xlnx,cluster-mode = <1>;
329
+ xlnx,tcm-mode = <1>;
330
+
331
+ #address-cells = <2>;
332
+ #size-cells = <2>;
333
+ ranges = <0x0 0x0 0x0 0xffe00000 0x0 0x10000>,
334
+ <0x0 0x20000 0x0 0xffe20000 0x0 0x10000>,
335
+ <0x0 0x10000 0x0 0xffe10000 0x0 0x10000>,
336
+ <0x0 0x30000 0x0 0xffe30000 0x0 0x10000>;
337
+
338
+ r5f@0 {
339
+ compatible = "xlnx,zynqmp-r5f";
340
+ reg = <0x0 0x0 0x0 0x10000>,
341
+ <0x0 0x20000 0x0 0x10000>,
342
+ <0x0 0x10000 0x0 0x10000>,
343
+ <0x0 0x30000 0x0 0x10000>;
344
+ reg-names = "atcm0", "btcm0", "atcm1", "btcm1";
345
+ power-domains = <&zynqmp_firmware PD_RPU_0>,
346
+ <&zynqmp_firmware PD_R5_0_ATCM>,
347
+ <&zynqmp_firmware PD_R5_0_BTCM>,
348
+ <&zynqmp_firmware PD_R5_1_ATCM>,
349
+ <&zynqmp_firmware PD_R5_1_BTCM>;
350
+ memory-region = <&rproc_0_fw_image>, <&rpu0vdev0buffer>,
351
+ <&rpu0vdev0vring0>, <&rpu0vdev0vring1>;
352
+ mboxes = <&ipi_mailbox_rpu0 0>, <&ipi_mailbox_rpu0 1>;
353
+ mbox-names = "tx", "rx";
354
+ };
126
355
127
- r5f-1 {
128
- compatible = "xlnx,zynqmp-r5f";
129
- power-domains = <&zynqmp_firmware 0x8>;
130
- memory-region = <&rproc_1_fw_image>, <&rpu1vdev0buffer>, <&rpu1vdev0vring0>, <&rpu1vdev0vring1>;
131
- mboxes = <&ipi_mailbox_rpu1 0>, <&ipi_mailbox_rpu1 1>;
132
- mbox-names = "tx", "rx";
356
+ r5f@1 {
357
+ compatible = "xlnx,zynqmp-r5f";
358
+ reg = <0x1 0x0 0x0 0x10000>, <0x1 0x20000 0x0 0x10000>;
359
+ reg-names = "atcm0", "btcm0";
360
+ power-domains = <&zynqmp_firmware PD_RPU_1>,
361
+ <&zynqmp_firmware PD_R5_1_ATCM>,
362
+ <&zynqmp_firmware PD_R5_1_BTCM>;
363
+ memory-region = <&rproc_1_fw_image>, <&rpu1vdev0buffer>,
364
+ <&rpu1vdev0vring0>, <&rpu1vdev0vring1>;
365
+ mboxes = <&ipi_mailbox_rpu1 0>, <&ipi_mailbox_rpu1 1>;
366
+ mbox-names = "tx", "rx";
367
+ };
133
368
};
134
369
};
135
370
...
0 commit comments