blob: 032c45231baf72c3c2c36a69c8e4db9479ea89b8 [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
7/dts-v1/;
8
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +01009#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/interrupt-controller/irq.h>
Boyan Karatoteva02bb362023-12-12 15:59:01 +000011#include "platform_def.h"
Leo Yanab0450f2024-04-15 09:05:34 +010012
13#include "tc-common.dtsi"
Boyan Karatotev62320dc2023-07-07 13:33:19 +000014#include "tc_vers.dtsi"
Boyan Karatoteve862f0b2023-11-14 09:38:08 +000015#if TARGET_FLAVOUR_FVP
16#include "tc_fvp.dtsi"
17#endif /* TARGET_FLAVOUR_FVP */
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +010018
Usama Ariff5c58af2020-04-17 16:13:39 +010019/ {
Usama Arif6ec0c652021-04-09 17:07:41 +010020 compatible = "arm,tc";
Usama Ariff5c58af2020-04-17 16:13:39 +010021 interrupt-parent = <&gic>;
22 #address-cells = <2>;
23 #size-cells = <2>;
24
25 aliases {
Boyan Karatotev04274142023-11-14 13:57:56 +000026 serial0 = &os_uart;
Usama Ariff5c58af2020-04-17 16:13:39 +010027 };
28
29 chosen {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +000030 stdout-path = STDOUT_PATH;
Ben Horganbafedcb2023-12-11 16:01:10 +000031 /*
32 * Add some dummy entropy for Linux so it
33 * doesn't delay the boot waiting for it.
34 */
35 rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
36 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
37 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
38 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
39 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
40 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
41 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
42 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >;
Usama Ariff5c58af2020-04-17 16:13:39 +010043 };
44
45 cpus {
46 #address-cells = <1>;
47 #size-cells = <0>;
48
49 cpu-map {
50 cluster0 {
51 core0 {
52 cpu = <&CPU0>;
53 };
54 core1 {
55 cpu = <&CPU1>;
56 };
57 core2 {
58 cpu = <&CPU2>;
59 };
60 core3 {
61 cpu = <&CPU3>;
62 };
Avinash Mehtae5da15e2020-10-28 16:43:28 +000063 core4 {
64 cpu = <&CPU4>;
65 };
66 core5 {
67 cpu = <&CPU5>;
68 };
69 core6 {
70 cpu = <&CPU6>;
71 };
72 core7 {
73 cpu = <&CPU7>;
74 };
Boyan Karatoteva02bb362023-12-12 15:59:01 +000075#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
76 core8 {
77 cpu = <&CPU8>;
78 };
79 core9 {
80 cpu = <&CPU9>;
81 };
82 core10 {
83 cpu = <&CPU10>;
84 };
85 core11 {
86 cpu = <&CPU11>;
87 };
88 core12 {
89 cpu = <&CPU12>;
90 };
91 core13 {
92 cpu = <&CPU13>;
93 };
94#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Ariff5c58af2020-04-17 16:13:39 +010095 };
96 };
97
Usama Arif8ea4f802020-08-12 17:14:37 +010098 /*
99 * The timings below are just to demonstrate working cpuidle.
100 * These values may be inaccurate.
101 */
102 idle-states {
Boyan Karatotev04274142023-11-14 13:57:56 +0000103 entry-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100104
105 CPU_SLEEP_0: cpu-sleep-0 {
106 compatible = "arm,idle-state";
107 arm,psci-suspend-param = <0x0010000>;
108 local-timer-stop;
109 entry-latency-us = <300>;
110 exit-latency-us = <1200>;
111 min-residency-us = <2000>;
112 };
113 CLUSTER_SLEEP_0: cluster-sleep-0 {
114 compatible = "arm,idle-state";
115 arm,psci-suspend-param = <0x1010000>;
116 local-timer-stop;
117 entry-latency-us = <400>;
118 exit-latency-us = <1200>;
119 min-residency-us = <2500>;
120 };
121 };
122
Chris Kayc19a82b2021-05-18 18:49:51 +0100123 amus {
124 amu: amu-0 {
125 #address-cells = <1>;
126 #size-cells = <0>;
127
128 mpmm_gear0: counter@0 {
129 reg = <0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100130 enable-at-el3;
131 };
132
133 mpmm_gear1: counter@1 {
134 reg = <1>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100135 enable-at-el3;
136 };
137
138 mpmm_gear2: counter@2 {
139 reg = <2>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100140 enable-at-el3;
141 };
142 };
143 };
144
Usama Ariff5c58af2020-04-17 16:13:39 +0100145 CPU0:cpu@0 {
146 device_type = "cpu";
147 compatible = "arm,armv8";
148 reg = <0x0>;
149 enable-method = "psci";
150 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100151 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000152 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100153 amu = <&amu>;
154 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100155 };
156
157 CPU1:cpu@100 {
158 device_type = "cpu";
159 compatible = "arm,armv8";
160 reg = <0x100>;
161 enable-method = "psci";
162 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100163 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000164 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100165 amu = <&amu>;
166 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100167 };
168
169 CPU2:cpu@200 {
170 device_type = "cpu";
171 compatible = "arm,armv8";
172 reg = <0x200>;
173 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100174 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000175#if TARGET_PLATFORM <= 2
176 clocks = <&scmi_dvfs 0>;
177 capacity-dmips-mhz = <LIT_CAPACITY>;
178#elif TARGET_PLATFORM == 3
179 clocks = <&scmi_dvfs 1>;
180 capacity-dmips-mhz = <MID_CAPACITY>;
181#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100182 amu = <&amu>;
183 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100184 };
185
186 CPU3:cpu@300 {
187 device_type = "cpu";
188 compatible = "arm,armv8";
189 reg = <0x300>;
190 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100191 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000192#if TARGET_PLATFORM <= 2
193 clocks = <&scmi_dvfs 0>;
194 capacity-dmips-mhz = <LIT_CAPACITY>;
195#elif TARGET_PLATFORM == 3
196 clocks = <&scmi_dvfs 1>;
197 capacity-dmips-mhz = <MID_CAPACITY>;
198#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100199 amu = <&amu>;
200 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100201 };
202
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000203 CPU4:cpu@400 {
204 device_type = "cpu";
205 compatible = "arm,armv8";
206 reg = <0x400>;
207 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000208 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000209 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000210 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100211 amu = <&amu>;
212 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000213 };
214
215 CPU5:cpu@500 {
216 device_type = "cpu";
217 compatible = "arm,armv8";
218 reg = <0x500>;
219 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000220 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000221 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000222 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100223 amu = <&amu>;
224 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000225 };
226
227 CPU6:cpu@600 {
228 device_type = "cpu";
229 compatible = "arm,armv8";
230 reg = <0x600>;
231 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000232 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000233#if TARGET_PLATFORM <= 2
234 clocks = <&scmi_dvfs 1>;
235 capacity-dmips-mhz = <MID_CAPACITY>;
236#elif TARGET_PLATFORM == 3
237 clocks = <&scmi_dvfs 2>;
238 capacity-dmips-mhz = <BIG_CAPACITY>;
239#endif /* TARGET_PLATFORM == 3 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100240 amu = <&amu>;
241 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000242 };
243
244 CPU7:cpu@700 {
245 device_type = "cpu";
246 compatible = "arm,armv8";
247 reg = <0x700>;
248 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000249 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000250#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
251 clocks = <&scmi_dvfs 1>;
252 capacity-dmips-mhz = <MID_CAPACITY>;
253#else
254 clocks = <&scmi_dvfs 2>;
255 capacity-dmips-mhz = <BIG_CAPACITY>;
256#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Chris Kayc19a82b2021-05-18 18:49:51 +0100257 amu = <&amu>;
258 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000259 };
260
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000261#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
262 CPU8:cpu@800 {
263 device_type = "cpu";
264 compatible = "arm,armv8";
265 reg = <0x800>;
266 enable-method = "psci";
267 clocks = <&scmi_dvfs 1>;
268 capacity-dmips-mhz = <MID_CAPACITY>;
269 amu = <&amu>;
270 supports-mpmm;
271 };
272
273 CPU9:cpu@900 {
274 device_type = "cpu";
275 compatible = "arm,armv8";
276 reg = <0x900>;
277 enable-method = "psci";
278 clocks = <&scmi_dvfs 2>;
279 capacity-dmips-mhz = <BIG2_CAPACITY>;
280 amu = <&amu>;
281 supports-mpmm;
282 };
283
284 CPU10:cpu@A00 {
285 device_type = "cpu";
286 compatible = "arm,armv8";
287 reg = <0xA00>;
288 enable-method = "psci";
289 clocks = <&scmi_dvfs 2>;
290 capacity-dmips-mhz = <BIG2_CAPACITY>;
291 amu = <&amu>;
292 supports-mpmm;
293 };
294
295 CPU11:cpu@B00 {
296 device_type = "cpu";
297 compatible = "arm,armv8";
298 reg = <0xB00>;
299 enable-method = "psci";
300 clocks = <&scmi_dvfs 2>;
301 capacity-dmips-mhz = <BIG2_CAPACITY>;
302 amu = <&amu>;
303 supports-mpmm;
304 };
305
306 CPU12:cpu@C00 {
307 device_type = "cpu";
308 compatible = "arm,armv8";
309 reg = <0xC00>;
310 enable-method = "psci";
311 clocks = <&scmi_dvfs 3>;
312 capacity-dmips-mhz = <BIG_CAPACITY>;
313 amu = <&amu>;
314 supports-mpmm;
315 };
316
317 CPU13:cpu@D00 {
318 device_type = "cpu";
319 compatible = "arm,armv8";
320 reg = <0xD00>;
321 enable-method = "psci";
322 clocks = <&scmi_dvfs 3>;
323 capacity-dmips-mhz = <BIG_CAPACITY>;
324 amu = <&amu>;
325 supports-mpmm;
326 };
327#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Ariff5c58af2020-04-17 16:13:39 +0100328 };
329
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000330 reserved-memory {
331 #address-cells = <2>;
332 #size-cells = <2>;
333 ranges;
334
Anders Dellienad60a422021-12-08 21:57:21 +0000335 linux,cma {
336 compatible = "shared-dma-pool";
337 reusable;
338 size = <0x0 0x8000000>;
339 linux,cma-default;
340 };
341
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000342 optee {
Davidson K2fff46c2022-12-14 17:38:14 +0530343 compatible = "restricted-dma-pool";
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000344 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000345 };
Tudor Cretud0628722021-09-24 12:09:53 +0000346
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000347 fwu_mm {
348 reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>;
Tudor Cretud0628722021-09-24 12:09:53 +0000349 no-map;
350 };
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000351 };
352
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000353 memory {
354 device_type = "memory";
355 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
356 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
357 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
358 };
359
Usama Ariff5c58af2020-04-17 16:13:39 +0100360 psci {
Usama Arif814646b2021-05-27 20:09:17 +0100361 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Ariff5c58af2020-04-17 16:13:39 +0100362 method = "smc";
363 };
364
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000365 cpu-pmu {
366 compatible = "arm,armv8-pmuv3";
367 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
368 interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>,
369 <&CPU4>, <&CPU5>, <&CPU6>, <&CPU7>
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000370#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
371 ,<&CPU8>, <&CPU9>, <&CPU10>, <&CPU11>,
372 <&CPU12>, <&CPU13>
373#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000374 ;
375 };
376
Usama Ariff5c58af2020-04-17 16:13:39 +0100377 sram: sram@6000000 {
378 compatible = "mmio-sram";
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000379 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100380
381 #address-cells = <1>;
382 #size-cells = <1>;
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000383 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100384
385 cpu_scp_scmi_mem: scp-shmem@0 {
386 compatible = "arm,scmi-shmem";
387 reg = <0x0 0x80>;
388 };
389 };
390
Leo Yanab0450f2024-04-15 09:05:34 +0100391 mbox_db_rx: mhu@MHU_RX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100392 compatible = "arm,mhuv2-rx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100393 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000394 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100395 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100396 #mbox-cells = <2>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000397 interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100398 interrupt-names = "mhu_rx";
399 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100400 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100401 };
402
Leo Yanab0450f2024-04-15 09:05:34 +0100403 mbox_db_tx: mhu@MHU_TX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100404 compatible = "arm,mhuv2-tx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100405 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000406 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100407 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100408 #mbox-cells = <2>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100409 interrupt-names = "mhu_tx";
410 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100411 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100412 };
413
414 scmi {
415 compatible = "arm,scmi";
Usama Ariff5c58af2020-04-17 16:13:39 +0100416 mbox-names = "tx", "rx";
Usama Arif63067ce2021-05-27 20:01:39 +0100417 mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >;
Usama Ariff5c58af2020-04-17 16:13:39 +0100418 shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>;
419 #address-cells = <1>;
420 #size-cells = <0>;
421
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000422#if TC_SCMI_PD_CTRL_EN
Ben Horgan127eabe2023-07-26 20:45:27 +0100423 scmi_devpd: protocol@11 {
424 reg = <0x11>;
425 #power-domain-cells = <1>;
426 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000427#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan127eabe2023-07-26 20:45:27 +0100428
Usama Ariff5c58af2020-04-17 16:13:39 +0100429 scmi_dvfs: protocol@13 {
430 reg = <0x13>;
431 #clock-cells = <1>;
432 };
433
434 scmi_clk: protocol@14 {
435 reg = <0x14>;
436 #clock-cells = <1>;
437 };
438 };
439
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000440 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev04274142023-11-14 13:57:56 +0000441 compatible = "arm,gic-v3";
Usama Ariff5c58af2020-04-17 16:13:39 +0100442 #address-cells = <2>;
443 #interrupt-cells = <3>;
444 #size-cells = <2>;
445 ranges;
446 interrupt-controller;
447 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000448 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100449 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100450 };
451
452 timer {
453 compatible = "arm,armv8-timer";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100454 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
455 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
456 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
457 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100458 };
459
Boyan Karatotev04274142023-11-14 13:57:56 +0000460 soc_refclk: refclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100461 compatible = "fixed-clock";
462 #clock-cells = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000463 clock-frequency = <1000000000>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100464 clock-output-names = "apb_pclk";
465 };
466
467 soc_refclk60mhz: refclk60mhz {
468 compatible = "fixed-clock";
469 #clock-cells = <0>;
470 clock-frequency = <60000000>;
471 clock-output-names = "iofpga_clk";
472 };
473
Boyan Karatotev04274142023-11-14 13:57:56 +0000474 soc_uartclk: uartclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100475 compatible = "fixed-clock";
476 #clock-cells = <0>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000477 clock-frequency = <UARTCLK_FREQ>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100478 clock-output-names = "uartclk";
479 };
480
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000481 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev04274142023-11-14 13:57:56 +0000482 os_uart: serial@2a400000 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100483 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000484 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100485 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000486 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100487 clock-names = "uartclk", "apb_pclk";
488 status = "okay";
489 };
490
491 vencoder {
492 compatible = "drm,virtual-encoder";
Usama Ariff5c58af2020-04-17 16:13:39 +0100493 port {
494 vencoder_in: endpoint {
Avinash Mehta0dc52292020-07-22 16:40:07 +0100495 remote-endpoint = <&dp_pl0_out0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100496 };
497 };
498
499 display-timings {
Boyan Karatotev04274142023-11-14 13:57:56 +0000500 timing-panel {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000501 VENCODER_TIMING;
Usama Ariff5c58af2020-04-17 16:13:39 +0100502 };
503 };
504
505 };
506
Usama Ariff5c58af2020-04-17 16:13:39 +0100507 ethernet@18000000 {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000508 compatible = ETH_COMPATIBLE;
Usama Ariff5c58af2020-04-17 16:13:39 +0100509 reg = <0x0 0x18000000 0x0 0x10000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100510 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000511
512 /* FPGA only but will work on FVP. Keep for simplicity */
513 phy-mode = "mii";
514 reg-io-width = <2>;
515 smsc,irq-push-pull;
Usama Ariff5c58af2020-04-17 16:13:39 +0100516 };
517
Usama Ariff5c58af2020-04-17 16:13:39 +0100518 bp_clock24mhz: clock24mhz {
519 compatible = "fixed-clock";
520 #clock-cells = <0>;
521 clock-frequency = <24000000>;
522 clock-output-names = "bp:clock24mhz";
523 };
524
Usama Ariff5c58af2020-04-17 16:13:39 +0100525
Usama Arifa41973a2020-06-10 16:27:53 +0100526 sysreg: sysreg@1c010000 {
527 compatible = "arm,vexpress-sysreg";
528 reg = <0x0 0x001c010000 0x0 0x1000>;
529 gpio-controller;
530 #gpio-cells = <2>;
531 };
532
533 fixed_3v3: v2m-3v3 {
534 compatible = "regulator-fixed";
535 regulator-name = "3V3";
536 regulator-min-microvolt = <3300000>;
537 regulator-max-microvolt = <3300000>;
538 regulator-always-on;
539 };
540
541 mmci@1c050000 {
542 compatible = "arm,pl180", "arm,primecell";
543 reg = <0x0 0x001c050000 0x0 0x1000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100544 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
545 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000546 MMC_REMOVABLE;
Usama Arifa41973a2020-06-10 16:27:53 +0100547 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000548 bus-width = <4>;
549 max-frequency = <25000000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100550 vmmc-supply = <&fixed_3v3>;
551 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
552 clock-names = "mclk", "apb_pclk";
553 };
554
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000555 gpu_clk: gpu_clk {
556 compatible = "fixed-clock";
557 #clock-cells = <0>;
558 clock-frequency = <1000000000>;
559 };
560
561 gpu_core_clk: gpu_core_clk {
562 compatible = "fixed-clock";
563 #clock-cells = <0>;
564 clock-frequency = <1000000000>;
565 };
566
Anders Dellien82117bb2022-01-01 21:51:21 +0000567 gpu: gpu@2d000000 {
568 compatible = "arm,mali-midgard";
569 reg = <0x0 0x2d000000 0x0 0x200000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100570 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
571 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
572 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anders Dellien82117bb2022-01-01 21:51:21 +0000573 interrupt-names = "JOB", "MMU", "GPU";
Ben Horgan127eabe2023-07-26 20:45:27 +0100574 clocks = <&gpu_core_clk>;
575 clock-names = "shadercores";
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000576#if TC_SCMI_PD_CTRL_EN
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000577 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan127eabe2023-07-26 20:45:27 +0100578 scmi-perf-domain = <3>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000579#endif /* TC_SCMI_PD_CTRL_EN */
580
581#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530582 iommus = <&smmu_700 0x200>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000583#endif /* TC_IOMMU_EN */
Anders Dellien82117bb2022-01-01 21:51:21 +0000584 };
585
Boyan Karatotev04274142023-11-14 13:57:56 +0000586 power_model_simple {
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000587 /*
588 * Numbers used are irrelevant to Titan,
589 * it helps suppressing the kernel warnings.
590 */
591 compatible = "arm,mali-simple-power-model";
592 static-coefficient = <2427750>;
593 dynamic-coefficient = <4687>;
594 ts = <20000 2000 (-20) 2>;
595 thermal-zone = "";
596 };
597
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000598#if TC_IOMMU_EN
Boyan Karatotev04274142023-11-14 13:57:56 +0000599 smmu_700: iommu@3f000000 {
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000600 #iommu-cells = <1>;
601 compatible = "arm,smmu-v3";
Davidson Ked80eab2022-11-21 17:49:51 +0530602 reg = <0x0 0x3f000000 0x0 0x5000000>;
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +0100603 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
604 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>,
605 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>;
606 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Ked80eab2022-11-21 17:49:51 +0530607 dma-coherent;
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000608 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000609#endif /* TC_IOMMU_EN */
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000610
Leo Yanab0450f2024-04-15 09:05:34 +0100611 dp0: display@DPU_ADDR {
Usama Ariff5c58af2020-04-17 16:13:39 +0100612 #address-cells = <1>;
613 #size-cells = <0>;
614 compatible = "arm,mali-d71";
Leo Yanab0450f2024-04-15 09:05:34 +0100615 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Davidson K8e941632023-12-14 12:03:23 +0530616 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100617 interrupt-names = "DPU";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000618 DPU_CLK_ATTR1;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000619#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530620 iommus = <&smmu_700 0x100>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000621#endif /* TC_IOMMU_EN */
622#if TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3)
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000623 power-domains = <&scmi_devpd DPU_SCMI_PD_IDX>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000624#endif /* TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3) */
625
Usama Ariff5c58af2020-04-17 16:13:39 +0100626 pl0: pipeline@0 {
627 reg = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000628 DPU_CLK_ATTR2;
Usama Ariff5c58af2020-04-17 16:13:39 +0100629 pl_id = <0>;
630 ports {
631 #address-cells = <1>;
632 #size-cells = <0>;
633 port@0 {
634 reg = <0>;
635 dp_pl0_out0: endpoint {
636 remote-endpoint = <&vencoder_in>;
637 };
638 };
639 };
640 };
641
642 pl1: pipeline@1 {
643 reg = <1>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000644 DPU_CLK_ATTR3;
Usama Ariff5c58af2020-04-17 16:13:39 +0100645 pl_id = <1>;
646 ports {
647 #address-cells = <1>;
648 #size-cells = <0>;
649 port@0 {
650 reg = <0>;
651 };
652 };
653 };
654 };
Arunachalam Ganapathy39460d02020-11-17 15:05:01 +0000655
Davidson Kb45ec8c2023-01-13 14:02:13 +0530656 /*
657 * L3 cache in the DSU is the Memory System Component (MSC)
658 * The MPAM registers are accessed through utility bus in the DSU
659 */
660 msc0 {
661 compatible = "arm,mpam-msc";
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000662 reg = <MPAM_ADDR 0x0 0x2000>;
Davidson Kb45ec8c2023-01-13 14:02:13 +0530663 };
664
Davidson K59da2072021-10-13 18:49:41 +0530665 ete0 {
666 compatible = "arm,embedded-trace-extension";
667 cpu = <&CPU0>;
668 };
669
670 ete1 {
671 compatible = "arm,embedded-trace-extension";
672 cpu = <&CPU1>;
673 };
674
675 ete2 {
676 compatible = "arm,embedded-trace-extension";
677 cpu = <&CPU2>;
678 };
679
680 ete3 {
681 compatible = "arm,embedded-trace-extension";
682 cpu = <&CPU3>;
683 };
684
685 ete4 {
686 compatible = "arm,embedded-trace-extension";
687 cpu = <&CPU4>;
688 };
689
690 ete5 {
691 compatible = "arm,embedded-trace-extension";
692 cpu = <&CPU5>;
693 };
694
695 ete6 {
696 compatible = "arm,embedded-trace-extension";
697 cpu = <&CPU6>;
698 };
699
700 ete7 {
701 compatible = "arm,embedded-trace-extension";
702 cpu = <&CPU7>;
703 };
704
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000705#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
706 ete8 {
707 compatible = "arm,embedded-trace-extension";
708 cpu = <&CPU8>;
709 };
710
711 ete9 {
712 compatible = "arm,embedded-trace-extension";
713 cpu = <&CPU9>;
714 };
715
716 ete10 {
717 compatible = "arm,embedded-trace-extension";
718 cpu = <&CPU10>;
719 };
720
721 ete11 {
722 compatible = "arm,embedded-trace-extension";
723 cpu = <&CPU11>;
724 };
725
726 ete12 {
727 compatible = "arm,embedded-trace-extension";
728 cpu = <&CPU12>;
729 };
730
731 ete13 {
732 compatible = "arm,embedded-trace-extension";
733 cpu = <&CPU13>;
734 };
735#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
736
Boyan Karatotev04274142023-11-14 13:57:56 +0000737 trbe {
Davidson K59da2072021-10-13 18:49:41 +0530738 compatible = "arm,trace-buffer-extension";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100739 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>;
Davidson K59da2072021-10-13 18:49:41 +0530740 };
Arunachalam Ganapathyba197f52022-04-11 14:43:15 +0100741
742 trusty {
743 #size-cells = <0x02>;
744 #address-cells = <0x02>;
745 ranges = <0x00>;
746 compatible = "android,trusty-v1";
747
748 virtio {
749 compatible = "android,trusty-virtio-v1";
750 };
751
752 test {
753 compatible = "android,trusty-test-v1";
754 };
755
756 log {
757 compatible = "android,trusty-log-v1";
758 };
759
760 irq {
761 ipi-range = <0x08 0x0f 0x08>;
762 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
763 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
764 compatible = "android,trusty-irq-v1";
765 };
766 };
Boyan Karatotev4fc4e9c2023-11-28 16:08:52 +0000767
768 /* used in U-boot, Linux doesn't care */
769 arm_ffa {
770 compatible = "arm,ffa";
771 method = "smc";
772 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100773};