blob: 09809f06f2e937ad037edecd18e6b241c26451cf [file] [log] [blame]
Usama Ariff5c58af2020-04-17 16:13:39 +01001/*
annsai0177241042023-02-20 13:34:57 +00002 * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
Usama Ariff5c58af2020-04-17 16:13:39 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Boyan Karatotev62320dc2023-07-07 13:33:19 +00007#include "tc_vers.dtsi"
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +01008
Usama Ariff5c58af2020-04-17 16:13:39 +01009/ {
Usama Arif6ec0c652021-04-09 17:07:41 +010010 compatible = "arm,tc";
Usama Ariff5c58af2020-04-17 16:13:39 +010011 interrupt-parent = <&gic>;
12 #address-cells = <2>;
13 #size-cells = <2>;
14
15 aliases {
Boyan Karatotev04274142023-11-14 13:57:56 +000016 serial0 = &os_uart;
Usama Ariff5c58af2020-04-17 16:13:39 +010017 };
18
19 chosen {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +000020 stdout-path = STDOUT_PATH;
Ben Horganbafedcb2023-12-11 16:01:10 +000021 /*
22 * Add some dummy entropy for Linux so it
23 * doesn't delay the boot waiting for it.
24 */
25 rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
26 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
27 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
28 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
29 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
30 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
31 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
32 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >;
Usama Ariff5c58af2020-04-17 16:13:39 +010033 };
34
35 cpus {
36 #address-cells = <1>;
37 #size-cells = <0>;
38
39 cpu-map {
40 cluster0 {
41 core0 {
42 cpu = <&CPU0>;
43 };
44 core1 {
45 cpu = <&CPU1>;
46 };
47 core2 {
48 cpu = <&CPU2>;
49 };
50 core3 {
51 cpu = <&CPU3>;
52 };
Avinash Mehtae5da15e2020-10-28 16:43:28 +000053 core4 {
54 cpu = <&CPU4>;
55 };
56 core5 {
57 cpu = <&CPU5>;
58 };
59 core6 {
60 cpu = <&CPU6>;
61 };
62 core7 {
63 cpu = <&CPU7>;
64 };
Boyan Karatoteva02bb362023-12-12 15:59:01 +000065#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
66 core8 {
67 cpu = <&CPU8>;
68 };
69 core9 {
70 cpu = <&CPU9>;
71 };
72 core10 {
73 cpu = <&CPU10>;
74 };
75 core11 {
76 cpu = <&CPU11>;
77 };
78 core12 {
79 cpu = <&CPU12>;
80 };
81 core13 {
82 cpu = <&CPU13>;
83 };
84#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Ariff5c58af2020-04-17 16:13:39 +010085 };
86 };
87
Usama Arif8ea4f802020-08-12 17:14:37 +010088 /*
89 * The timings below are just to demonstrate working cpuidle.
90 * These values may be inaccurate.
91 */
92 idle-states {
Boyan Karatotev04274142023-11-14 13:57:56 +000093 entry-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +010094
95 CPU_SLEEP_0: cpu-sleep-0 {
96 compatible = "arm,idle-state";
97 arm,psci-suspend-param = <0x0010000>;
98 local-timer-stop;
99 entry-latency-us = <300>;
100 exit-latency-us = <1200>;
101 min-residency-us = <2000>;
102 };
103 CLUSTER_SLEEP_0: cluster-sleep-0 {
104 compatible = "arm,idle-state";
105 arm,psci-suspend-param = <0x1010000>;
106 local-timer-stop;
107 entry-latency-us = <400>;
108 exit-latency-us = <1200>;
109 min-residency-us = <2500>;
110 };
111 };
112
Chris Kayc19a82b2021-05-18 18:49:51 +0100113 amus {
114 amu: amu-0 {
115 #address-cells = <1>;
116 #size-cells = <0>;
117
118 mpmm_gear0: counter@0 {
119 reg = <0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100120 enable-at-el3;
121 };
122
123 mpmm_gear1: counter@1 {
124 reg = <1>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100125 enable-at-el3;
126 };
127
128 mpmm_gear2: counter@2 {
129 reg = <2>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100130 enable-at-el3;
131 };
132 };
133 };
134
Usama Ariff5c58af2020-04-17 16:13:39 +0100135 CPU0:cpu@0 {
136 device_type = "cpu";
137 compatible = "arm,armv8";
138 reg = <0x0>;
139 enable-method = "psci";
140 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100141 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000142 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100143 amu = <&amu>;
144 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100145 };
146
147 CPU1:cpu@100 {
148 device_type = "cpu";
149 compatible = "arm,armv8";
150 reg = <0x100>;
151 enable-method = "psci";
152 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100153 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000154 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100155 amu = <&amu>;
156 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100157 };
158
159 CPU2:cpu@200 {
160 device_type = "cpu";
161 compatible = "arm,armv8";
162 reg = <0x200>;
163 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100164 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000165#if TARGET_PLATFORM <= 2
166 clocks = <&scmi_dvfs 0>;
167 capacity-dmips-mhz = <LIT_CAPACITY>;
168#elif TARGET_PLATFORM == 3
169 clocks = <&scmi_dvfs 1>;
170 capacity-dmips-mhz = <MID_CAPACITY>;
171#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100172 amu = <&amu>;
173 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100174 };
175
176 CPU3:cpu@300 {
177 device_type = "cpu";
178 compatible = "arm,armv8";
179 reg = <0x300>;
180 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100181 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000182#if TARGET_PLATFORM <= 2
183 clocks = <&scmi_dvfs 0>;
184 capacity-dmips-mhz = <LIT_CAPACITY>;
185#elif TARGET_PLATFORM == 3
186 clocks = <&scmi_dvfs 1>;
187 capacity-dmips-mhz = <MID_CAPACITY>;
188#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100189 amu = <&amu>;
190 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100191 };
192
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000193 CPU4:cpu@400 {
194 device_type = "cpu";
195 compatible = "arm,armv8";
196 reg = <0x400>;
197 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000198 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000199 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000200 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100201 amu = <&amu>;
202 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000203 };
204
205 CPU5:cpu@500 {
206 device_type = "cpu";
207 compatible = "arm,armv8";
208 reg = <0x500>;
209 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000210 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000211 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000212 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100213 amu = <&amu>;
214 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000215 };
216
217 CPU6:cpu@600 {
218 device_type = "cpu";
219 compatible = "arm,armv8";
220 reg = <0x600>;
221 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000222 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000223#if TARGET_PLATFORM <= 2
224 clocks = <&scmi_dvfs 1>;
225 capacity-dmips-mhz = <MID_CAPACITY>;
226#elif TARGET_PLATFORM == 3
227 clocks = <&scmi_dvfs 2>;
228 capacity-dmips-mhz = <BIG_CAPACITY>;
229#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100230 amu = <&amu>;
231 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000232 };
233
234 CPU7:cpu@700 {
235 device_type = "cpu";
236 compatible = "arm,armv8";
237 reg = <0x700>;
238 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000239 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000240#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
241 clocks = <&scmi_dvfs 1>;
242 capacity-dmips-mhz = <MID_CAPACITY>;
243#else
244 clocks = <&scmi_dvfs 2>;
245 capacity-dmips-mhz = <BIG_CAPACITY>;
246#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100247 amu = <&amu>;
248 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000249 };
250
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000251#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
252 CPU8:cpu@800 {
253 device_type = "cpu";
254 compatible = "arm,armv8";
255 reg = <0x800>;
256 enable-method = "psci";
257 clocks = <&scmi_dvfs 1>;
258 capacity-dmips-mhz = <MID_CAPACITY>;
259 amu = <&amu>;
260 supports-mpmm;
261 };
262
263 CPU9:cpu@900 {
264 device_type = "cpu";
265 compatible = "arm,armv8";
266 reg = <0x900>;
267 enable-method = "psci";
268 clocks = <&scmi_dvfs 2>;
269 capacity-dmips-mhz = <BIG2_CAPACITY>;
270 amu = <&amu>;
271 supports-mpmm;
272 };
273
274 CPU10:cpu@A00 {
275 device_type = "cpu";
276 compatible = "arm,armv8";
277 reg = <0xA00>;
278 enable-method = "psci";
279 clocks = <&scmi_dvfs 2>;
280 capacity-dmips-mhz = <BIG2_CAPACITY>;
281 amu = <&amu>;
282 supports-mpmm;
283 };
284
285 CPU11:cpu@B00 {
286 device_type = "cpu";
287 compatible = "arm,armv8";
288 reg = <0xB00>;
289 enable-method = "psci";
290 clocks = <&scmi_dvfs 2>;
291 capacity-dmips-mhz = <BIG2_CAPACITY>;
292 amu = <&amu>;
293 supports-mpmm;
294 };
295
296 CPU12:cpu@C00 {
297 device_type = "cpu";
298 compatible = "arm,armv8";
299 reg = <0xC00>;
300 enable-method = "psci";
301 clocks = <&scmi_dvfs 3>;
302 capacity-dmips-mhz = <BIG_CAPACITY>;
303 amu = <&amu>;
304 supports-mpmm;
305 };
306
307 CPU13:cpu@D00 {
308 device_type = "cpu";
309 compatible = "arm,armv8";
310 reg = <0xD00>;
311 enable-method = "psci";
312 clocks = <&scmi_dvfs 3>;
313 capacity-dmips-mhz = <BIG_CAPACITY>;
314 amu = <&amu>;
315 supports-mpmm;
316 };
317#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Ariff5c58af2020-04-17 16:13:39 +0100318 };
319
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000320 reserved-memory {
321 #address-cells = <2>;
322 #size-cells = <2>;
323 ranges;
324
Anders Dellienad60a422021-12-08 21:57:21 +0000325 linux,cma {
326 compatible = "shared-dma-pool";
327 reusable;
328 size = <0x0 0x8000000>;
329 linux,cma-default;
330 };
331
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000332 optee {
Davidson K2fff46c2022-12-14 17:38:14 +0530333 compatible = "restricted-dma-pool";
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000334 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000335 };
Tudor Cretud0628722021-09-24 12:09:53 +0000336
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000337 fwu_mm {
338 reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>;
Tudor Cretud0628722021-09-24 12:09:53 +0000339 no-map;
340 };
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000341 };
342
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000343 memory {
344 device_type = "memory";
345 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
346 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
347 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
348 };
349
Usama Ariff5c58af2020-04-17 16:13:39 +0100350 psci {
Usama Arif814646b2021-05-27 20:09:17 +0100351 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Ariff5c58af2020-04-17 16:13:39 +0100352 method = "smc";
353 };
354
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000355 cpu-pmu {
356 compatible = "arm,armv8-pmuv3";
357 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
358 interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>,
359 <&CPU4>, <&CPU5>, <&CPU6>, <&CPU7>
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000360#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
361 ,<&CPU8>, <&CPU9>, <&CPU10>, <&CPU11>,
362 <&CPU12>, <&CPU13>
363#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000364 ;
365 };
366
Usama Ariff5c58af2020-04-17 16:13:39 +0100367 sram: sram@6000000 {
368 compatible = "mmio-sram";
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000369 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100370
371 #address-cells = <1>;
372 #size-cells = <1>;
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000373 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100374
375 cpu_scp_scmi_mem: scp-shmem@0 {
376 compatible = "arm,scmi-shmem";
377 reg = <0x0 0x80>;
378 };
379 };
380
Leo Yanab0450f2024-04-15 09:05:34 +0100381 mbox_db_rx: mhu@MHU_RX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100382 compatible = "arm,mhuv2-rx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100383 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000384 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100385 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100386 #mbox-cells = <2>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000387 interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100388 interrupt-names = "mhu_rx";
389 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100390 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100391 };
392
Leo Yanab0450f2024-04-15 09:05:34 +0100393 mbox_db_tx: mhu@MHU_TX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100394 compatible = "arm,mhuv2-tx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100395 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000396 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100397 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100398 #mbox-cells = <2>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100399 interrupt-names = "mhu_tx";
400 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100401 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100402 };
403
404 scmi {
405 compatible = "arm,scmi";
Usama Ariff5c58af2020-04-17 16:13:39 +0100406 mbox-names = "tx", "rx";
Usama Arif63067ce2021-05-27 20:01:39 +0100407 mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >;
Usama Ariff5c58af2020-04-17 16:13:39 +0100408 shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>;
409 #address-cells = <1>;
410 #size-cells = <0>;
411
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000412#if TC_SCMI_PD_CTRL_EN
Ben Horgan127eabe2023-07-26 20:45:27 +0100413 scmi_devpd: protocol@11 {
414 reg = <0x11>;
415 #power-domain-cells = <1>;
416 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000417#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan127eabe2023-07-26 20:45:27 +0100418
Usama Ariff5c58af2020-04-17 16:13:39 +0100419 scmi_dvfs: protocol@13 {
420 reg = <0x13>;
421 #clock-cells = <1>;
422 };
423
424 scmi_clk: protocol@14 {
425 reg = <0x14>;
426 #clock-cells = <1>;
427 };
428 };
429
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000430 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev04274142023-11-14 13:57:56 +0000431 compatible = "arm,gic-v3";
Usama Ariff5c58af2020-04-17 16:13:39 +0100432 #address-cells = <2>;
433 #interrupt-cells = <3>;
434 #size-cells = <2>;
435 ranges;
436 interrupt-controller;
437 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000438 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100439 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100440 };
441
442 timer {
443 compatible = "arm,armv8-timer";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100444 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
445 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
446 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
447 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100448 };
449
Boyan Karatotev04274142023-11-14 13:57:56 +0000450 soc_refclk: refclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100451 compatible = "fixed-clock";
452 #clock-cells = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000453 clock-frequency = <1000000000>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100454 clock-output-names = "apb_pclk";
455 };
456
457 soc_refclk60mhz: refclk60mhz {
458 compatible = "fixed-clock";
459 #clock-cells = <0>;
460 clock-frequency = <60000000>;
461 clock-output-names = "iofpga_clk";
462 };
463
Boyan Karatotev04274142023-11-14 13:57:56 +0000464 soc_uartclk: uartclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100465 compatible = "fixed-clock";
466 #clock-cells = <0>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000467 clock-frequency = <UARTCLK_FREQ>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100468 clock-output-names = "uartclk";
469 };
470
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000471 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev04274142023-11-14 13:57:56 +0000472 os_uart: serial@2a400000 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100473 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000474 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100475 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000476 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100477 clock-names = "uartclk", "apb_pclk";
478 status = "okay";
479 };
480
481 vencoder {
482 compatible = "drm,virtual-encoder";
Usama Ariff5c58af2020-04-17 16:13:39 +0100483 port {
484 vencoder_in: endpoint {
Avinash Mehta0dc52292020-07-22 16:40:07 +0100485 remote-endpoint = <&dp_pl0_out0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100486 };
487 };
488
489 display-timings {
Boyan Karatotev04274142023-11-14 13:57:56 +0000490 timing-panel {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000491 VENCODER_TIMING;
Usama Ariff5c58af2020-04-17 16:13:39 +0100492 };
493 };
494
495 };
496
Usama Ariff5c58af2020-04-17 16:13:39 +0100497 ethernet@18000000 {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000498 compatible = ETH_COMPATIBLE;
Usama Ariff5c58af2020-04-17 16:13:39 +0100499 reg = <0x0 0x18000000 0x0 0x10000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100500 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000501
502 /* FPGA only but will work on FVP. Keep for simplicity */
503 phy-mode = "mii";
504 reg-io-width = <2>;
505 smsc,irq-push-pull;
Usama Ariff5c58af2020-04-17 16:13:39 +0100506 };
507
Usama Ariff5c58af2020-04-17 16:13:39 +0100508 bp_clock24mhz: clock24mhz {
509 compatible = "fixed-clock";
510 #clock-cells = <0>;
511 clock-frequency = <24000000>;
512 clock-output-names = "bp:clock24mhz";
513 };
514
Usama Ariff5c58af2020-04-17 16:13:39 +0100515
Usama Arifa41973a2020-06-10 16:27:53 +0100516 sysreg: sysreg@1c010000 {
517 compatible = "arm,vexpress-sysreg";
518 reg = <0x0 0x001c010000 0x0 0x1000>;
519 gpio-controller;
520 #gpio-cells = <2>;
521 };
522
523 fixed_3v3: v2m-3v3 {
524 compatible = "regulator-fixed";
525 regulator-name = "3V3";
526 regulator-min-microvolt = <3300000>;
527 regulator-max-microvolt = <3300000>;
528 regulator-always-on;
529 };
530
531 mmci@1c050000 {
532 compatible = "arm,pl180", "arm,primecell";
533 reg = <0x0 0x001c050000 0x0 0x1000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100534 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
535 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000536 MMC_REMOVABLE;
Usama Arifa41973a2020-06-10 16:27:53 +0100537 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000538 bus-width = <4>;
539 max-frequency = <25000000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100540 vmmc-supply = <&fixed_3v3>;
541 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
542 clock-names = "mclk", "apb_pclk";
543 };
544
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000545 gpu_clk: gpu_clk {
546 compatible = "fixed-clock";
547 #clock-cells = <0>;
548 clock-frequency = <1000000000>;
549 };
550
551 gpu_core_clk: gpu_core_clk {
552 compatible = "fixed-clock";
553 #clock-cells = <0>;
554 clock-frequency = <1000000000>;
555 };
556
Anders Dellien82117bb2022-01-01 21:51:21 +0000557 gpu: gpu@2d000000 {
558 compatible = "arm,mali-midgard";
559 reg = <0x0 0x2d000000 0x0 0x200000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100560 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
561 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
562 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anders Dellien82117bb2022-01-01 21:51:21 +0000563 interrupt-names = "JOB", "MMU", "GPU";
Ben Horgan127eabe2023-07-26 20:45:27 +0100564 clocks = <&gpu_core_clk>;
565 clock-names = "shadercores";
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000566#if TC_SCMI_PD_CTRL_EN
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000567 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan127eabe2023-07-26 20:45:27 +0100568 scmi-perf-domain = <3>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000569#endif /* TC_SCMI_PD_CTRL_EN */
570
571#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530572 iommus = <&smmu_700 0x200>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000573#endif /* TC_IOMMU_EN */
Anders Dellien82117bb2022-01-01 21:51:21 +0000574 };
575
Boyan Karatotev04274142023-11-14 13:57:56 +0000576 power_model_simple {
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000577 /*
578 * Numbers used are irrelevant to Titan,
579 * it helps suppressing the kernel warnings.
580 */
581 compatible = "arm,mali-simple-power-model";
582 static-coefficient = <2427750>;
583 dynamic-coefficient = <4687>;
584 ts = <20000 2000 (-20) 2>;
585 thermal-zone = "";
586 };
587
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000588#if TC_IOMMU_EN
Boyan Karatotev04274142023-11-14 13:57:56 +0000589 smmu_700: iommu@3f000000 {
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000590 #iommu-cells = <1>;
591 compatible = "arm,smmu-v3";
Davidson Ked80eab2022-11-21 17:49:51 +0530592 reg = <0x0 0x3f000000 0x0 0x5000000>;
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +0100593 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
594 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>,
595 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>;
596 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Ked80eab2022-11-21 17:49:51 +0530597 dma-coherent;
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000598 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000599#endif /* TC_IOMMU_EN */
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000600
Leo Yanab0450f2024-04-15 09:05:34 +0100601 dp0: display@DPU_ADDR {
Usama Ariff5c58af2020-04-17 16:13:39 +0100602 #address-cells = <1>;
603 #size-cells = <0>;
604 compatible = "arm,mali-d71";
Leo Yanab0450f2024-04-15 09:05:34 +0100605 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Davidson K8e941632023-12-14 12:03:23 +0530606 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100607 interrupt-names = "DPU";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000608 DPU_CLK_ATTR1;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000609#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530610 iommus = <&smmu_700 0x100>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000611#endif /* TC_IOMMU_EN */
612#if TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3)
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000613 power-domains = <&scmi_devpd DPU_SCMI_PD_IDX>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000614#endif /* TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3) */
615
Usama Ariff5c58af2020-04-17 16:13:39 +0100616 pl0: pipeline@0 {
617 reg = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000618 DPU_CLK_ATTR2;
Usama Ariff5c58af2020-04-17 16:13:39 +0100619 pl_id = <0>;
620 ports {
621 #address-cells = <1>;
622 #size-cells = <0>;
623 port@0 {
624 reg = <0>;
625 dp_pl0_out0: endpoint {
626 remote-endpoint = <&vencoder_in>;
627 };
628 };
629 };
630 };
631
632 pl1: pipeline@1 {
633 reg = <1>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000634 DPU_CLK_ATTR3;
Usama Ariff5c58af2020-04-17 16:13:39 +0100635 pl_id = <1>;
636 ports {
637 #address-cells = <1>;
638 #size-cells = <0>;
639 port@0 {
640 reg = <0>;
641 };
642 };
643 };
644 };
Arunachalam Ganapathy39460d02020-11-17 15:05:01 +0000645
Davidson Kb45ec8c2023-01-13 14:02:13 +0530646 /*
647 * L3 cache in the DSU is the Memory System Component (MSC)
648 * The MPAM registers are accessed through utility bus in the DSU
649 */
650 msc0 {
651 compatible = "arm,mpam-msc";
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000652 reg = <MPAM_ADDR 0x0 0x2000>;
Davidson Kb45ec8c2023-01-13 14:02:13 +0530653 };
654
Davidson K59da2072021-10-13 18:49:41 +0530655 ete0 {
656 compatible = "arm,embedded-trace-extension";
657 cpu = <&CPU0>;
658 };
659
660 ete1 {
661 compatible = "arm,embedded-trace-extension";
662 cpu = <&CPU1>;
663 };
664
665 ete2 {
666 compatible = "arm,embedded-trace-extension";
667 cpu = <&CPU2>;
668 };
669
670 ete3 {
671 compatible = "arm,embedded-trace-extension";
672 cpu = <&CPU3>;
673 };
674
675 ete4 {
676 compatible = "arm,embedded-trace-extension";
677 cpu = <&CPU4>;
678 };
679
680 ete5 {
681 compatible = "arm,embedded-trace-extension";
682 cpu = <&CPU5>;
683 };
684
685 ete6 {
686 compatible = "arm,embedded-trace-extension";
687 cpu = <&CPU6>;
688 };
689
690 ete7 {
691 compatible = "arm,embedded-trace-extension";
692 cpu = <&CPU7>;
693 };
694
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000695#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
696 ete8 {
697 compatible = "arm,embedded-trace-extension";
698 cpu = <&CPU8>;
699 };
700
701 ete9 {
702 compatible = "arm,embedded-trace-extension";
703 cpu = <&CPU9>;
704 };
705
706 ete10 {
707 compatible = "arm,embedded-trace-extension";
708 cpu = <&CPU10>;
709 };
710
711 ete11 {
712 compatible = "arm,embedded-trace-extension";
713 cpu = <&CPU11>;
714 };
715
716 ete12 {
717 compatible = "arm,embedded-trace-extension";
718 cpu = <&CPU12>;
719 };
720
721 ete13 {
722 compatible = "arm,embedded-trace-extension";
723 cpu = <&CPU13>;
724 };
725#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
726
Boyan Karatotev04274142023-11-14 13:57:56 +0000727 trbe {
Davidson K59da2072021-10-13 18:49:41 +0530728 compatible = "arm,trace-buffer-extension";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100729 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>;
Davidson K59da2072021-10-13 18:49:41 +0530730 };
Arunachalam Ganapathyba197f52022-04-11 14:43:15 +0100731
732 trusty {
733 #size-cells = <0x02>;
734 #address-cells = <0x02>;
735 ranges = <0x00>;
736 compatible = "android,trusty-v1";
737
738 virtio {
739 compatible = "android,trusty-virtio-v1";
740 };
741
742 test {
743 compatible = "android,trusty-test-v1";
744 };
745
746 log {
747 compatible = "android,trusty-log-v1";
748 };
749
750 irq {
751 ipi-range = <0x08 0x0f 0x08>;
752 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
753 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
754 compatible = "android,trusty-irq-v1";
755 };
756 };
Boyan Karatotev4fc4e9c2023-11-28 16:08:52 +0000757
758 /* used in U-boot, Linux doesn't care */
759 arm_ffa {
760 compatible = "arm,ffa";
761 method = "smc";
762 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100763};