blob: e400f2b47f41b74592a2e2fb929d9f8126244e6e [file] [log] [blame]
Usama Arifbec5afd2020-04-17 16:13:39 +01001/*
annsai017c607f22023-02-20 13:34:57 +00002 * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
Usama Arifbec5afd2020-04-17 16:13:39 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7/dts-v1/;
8
Kshitij Sisodiab32a8f42023-08-16 09:46:05 +01009#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/interrupt-controller/irq.h>
Boyan Karatotev192ad5d2023-12-12 15:59:01 +000011#include "platform_def.h"
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +000012#include "tc_vers.dtsi"
Boyan Karatotev9ac73a42023-11-14 09:38:08 +000013#if TARGET_FLAVOUR_FVP
14#include "tc_fvp.dtsi"
15#endif /* TARGET_FLAVOUR_FVP */
Kshitij Sisodiab32a8f42023-08-16 09:46:05 +010016
Usama Arifbec5afd2020-04-17 16:13:39 +010017/ {
Usama Ariff1513622021-04-09 17:07:41 +010018 compatible = "arm,tc";
Usama Arifbec5afd2020-04-17 16:13:39 +010019 interrupt-parent = <&gic>;
20 #address-cells = <2>;
21 #size-cells = <2>;
22
23 aliases {
Boyan Karatotev13b8e742023-11-14 13:57:56 +000024 serial0 = &os_uart;
Usama Arifbec5afd2020-04-17 16:13:39 +010025 };
26
27 chosen {
Boyan Karatotev95562762023-11-15 11:54:33 +000028 stdout-path = STDOUT_PATH;
Usama Arifbec5afd2020-04-17 16:13:39 +010029 };
30
31 cpus {
32 #address-cells = <1>;
33 #size-cells = <0>;
34
35 cpu-map {
36 cluster0 {
37 core0 {
38 cpu = <&CPU0>;
39 };
40 core1 {
41 cpu = <&CPU1>;
42 };
43 core2 {
44 cpu = <&CPU2>;
45 };
46 core3 {
47 cpu = <&CPU3>;
48 };
Avinash Mehtaf68a0842020-10-28 16:43:28 +000049 core4 {
50 cpu = <&CPU4>;
51 };
52 core5 {
53 cpu = <&CPU5>;
54 };
55 core6 {
56 cpu = <&CPU6>;
57 };
58 core7 {
59 cpu = <&CPU7>;
60 };
Boyan Karatotev192ad5d2023-12-12 15:59:01 +000061#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
62 core8 {
63 cpu = <&CPU8>;
64 };
65 core9 {
66 cpu = <&CPU9>;
67 };
68 core10 {
69 cpu = <&CPU10>;
70 };
71 core11 {
72 cpu = <&CPU11>;
73 };
74 core12 {
75 cpu = <&CPU12>;
76 };
77 core13 {
78 cpu = <&CPU13>;
79 };
80#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Arifbec5afd2020-04-17 16:13:39 +010081 };
82 };
83
Usama Arif57900782020-08-12 17:14:37 +010084 /*
85 * The timings below are just to demonstrate working cpuidle.
86 * These values may be inaccurate.
87 */
88 idle-states {
Boyan Karatotev13b8e742023-11-14 13:57:56 +000089 entry-method = "psci";
Usama Arif57900782020-08-12 17:14:37 +010090
91 CPU_SLEEP_0: cpu-sleep-0 {
92 compatible = "arm,idle-state";
93 arm,psci-suspend-param = <0x0010000>;
94 local-timer-stop;
95 entry-latency-us = <300>;
96 exit-latency-us = <1200>;
97 min-residency-us = <2000>;
98 };
99 CLUSTER_SLEEP_0: cluster-sleep-0 {
100 compatible = "arm,idle-state";
101 arm,psci-suspend-param = <0x1010000>;
102 local-timer-stop;
103 entry-latency-us = <400>;
104 exit-latency-us = <1200>;
105 min-residency-us = <2500>;
106 };
107 };
108
Chris Kayc2d29ba2021-05-18 18:49:51 +0100109 amus {
110 amu: amu-0 {
111 #address-cells = <1>;
112 #size-cells = <0>;
113
114 mpmm_gear0: counter@0 {
115 reg = <0>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100116 enable-at-el3;
117 };
118
119 mpmm_gear1: counter@1 {
120 reg = <1>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100121 enable-at-el3;
122 };
123
124 mpmm_gear2: counter@2 {
125 reg = <2>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100126 enable-at-el3;
127 };
128 };
129 };
130
Usama Arifbec5afd2020-04-17 16:13:39 +0100131 CPU0:cpu@0 {
132 device_type = "cpu";
133 compatible = "arm,armv8";
134 reg = <0x0>;
135 enable-method = "psci";
136 clocks = <&scmi_dvfs 0>;
Usama Arif57900782020-08-12 17:14:37 +0100137 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000138 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100139 amu = <&amu>;
140 supports-mpmm;
Usama Arifbec5afd2020-04-17 16:13:39 +0100141 };
142
143 CPU1:cpu@100 {
144 device_type = "cpu";
145 compatible = "arm,armv8";
146 reg = <0x100>;
147 enable-method = "psci";
148 clocks = <&scmi_dvfs 0>;
Usama Arif57900782020-08-12 17:14:37 +0100149 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000150 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100151 amu = <&amu>;
152 supports-mpmm;
Usama Arifbec5afd2020-04-17 16:13:39 +0100153 };
154
155 CPU2:cpu@200 {
156 device_type = "cpu";
157 compatible = "arm,armv8";
158 reg = <0x200>;
159 enable-method = "psci";
Usama Arif57900782020-08-12 17:14:37 +0100160 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000161#if TARGET_PLATFORM <= 2
162 clocks = <&scmi_dvfs 0>;
163 capacity-dmips-mhz = <LIT_CAPACITY>;
164#elif TARGET_PLATFORM == 3
165 clocks = <&scmi_dvfs 1>;
166 capacity-dmips-mhz = <MID_CAPACITY>;
167#endif /* TARGET_PLATFORM == 3 */
Chris Kayc2d29ba2021-05-18 18:49:51 +0100168 amu = <&amu>;
169 supports-mpmm;
Usama Arifbec5afd2020-04-17 16:13:39 +0100170 };
171
172 CPU3:cpu@300 {
173 device_type = "cpu";
174 compatible = "arm,armv8";
175 reg = <0x300>;
176 enable-method = "psci";
Usama Arif57900782020-08-12 17:14:37 +0100177 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000178#if TARGET_PLATFORM <= 2
179 clocks = <&scmi_dvfs 0>;
180 capacity-dmips-mhz = <LIT_CAPACITY>;
181#elif TARGET_PLATFORM == 3
182 clocks = <&scmi_dvfs 1>;
183 capacity-dmips-mhz = <MID_CAPACITY>;
184#endif /* TARGET_PLATFORM == 3 */
Chris Kayc2d29ba2021-05-18 18:49:51 +0100185 amu = <&amu>;
186 supports-mpmm;
Usama Arifbec5afd2020-04-17 16:13:39 +0100187 };
188
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000189 CPU4:cpu@400 {
190 device_type = "cpu";
191 compatible = "arm,armv8";
192 reg = <0x400>;
193 enable-method = "psci";
Usama Arif75edb752021-02-03 15:40:46 +0000194 clocks = <&scmi_dvfs 1>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000195 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000196 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100197 amu = <&amu>;
198 supports-mpmm;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000199 };
200
201 CPU5:cpu@500 {
202 device_type = "cpu";
203 compatible = "arm,armv8";
204 reg = <0x500>;
205 enable-method = "psci";
Usama Arif75edb752021-02-03 15:40:46 +0000206 clocks = <&scmi_dvfs 1>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000207 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000208 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100209 amu = <&amu>;
210 supports-mpmm;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000211 };
212
213 CPU6:cpu@600 {
214 device_type = "cpu";
215 compatible = "arm,armv8";
216 reg = <0x600>;
217 enable-method = "psci";
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000218 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000219#if TARGET_PLATFORM <= 2
220 clocks = <&scmi_dvfs 1>;
221 capacity-dmips-mhz = <MID_CAPACITY>;
222#elif TARGET_PLATFORM == 3
223 clocks = <&scmi_dvfs 2>;
224 capacity-dmips-mhz = <BIG_CAPACITY>;
225#endif /* TARGET_PLATFORM == 3 */
Chris Kayc2d29ba2021-05-18 18:49:51 +0100226 amu = <&amu>;
227 supports-mpmm;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000228 };
229
230 CPU7:cpu@700 {
231 device_type = "cpu";
232 compatible = "arm,armv8";
233 reg = <0x700>;
234 enable-method = "psci";
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000235 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000236#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
237 clocks = <&scmi_dvfs 1>;
238 capacity-dmips-mhz = <MID_CAPACITY>;
239#else
240 clocks = <&scmi_dvfs 2>;
241 capacity-dmips-mhz = <BIG_CAPACITY>;
242#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
243 amu = <&amu>;
244 supports-mpmm;
245 };
246
247#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
248 CPU8:cpu@800 {
249 device_type = "cpu";
250 compatible = "arm,armv8";
251 reg = <0x800>;
252 enable-method = "psci";
253 clocks = <&scmi_dvfs 1>;
254 capacity-dmips-mhz = <MID_CAPACITY>;
255 amu = <&amu>;
256 supports-mpmm;
257 };
258
259 CPU9:cpu@900 {
260 device_type = "cpu";
261 compatible = "arm,armv8";
262 reg = <0x900>;
263 enable-method = "psci";
264 clocks = <&scmi_dvfs 2>;
265 capacity-dmips-mhz = <BIG2_CAPACITY>;
266 amu = <&amu>;
267 supports-mpmm;
268 };
269
270 CPU10:cpu@A00 {
271 device_type = "cpu";
272 compatible = "arm,armv8";
273 reg = <0xA00>;
274 enable-method = "psci";
275 clocks = <&scmi_dvfs 2>;
276 capacity-dmips-mhz = <BIG2_CAPACITY>;
277 amu = <&amu>;
278 supports-mpmm;
279 };
280
281 CPU11:cpu@B00 {
282 device_type = "cpu";
283 compatible = "arm,armv8";
284 reg = <0xB00>;
285 enable-method = "psci";
286 clocks = <&scmi_dvfs 2>;
287 capacity-dmips-mhz = <BIG2_CAPACITY>;
Chris Kayc2d29ba2021-05-18 18:49:51 +0100288 amu = <&amu>;
289 supports-mpmm;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000290 };
291
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000292 CPU12:cpu@C00 {
293 device_type = "cpu";
294 compatible = "arm,armv8";
295 reg = <0xC00>;
296 enable-method = "psci";
297 clocks = <&scmi_dvfs 3>;
298 capacity-dmips-mhz = <BIG_CAPACITY>;
299 amu = <&amu>;
300 supports-mpmm;
301 };
302
303 CPU13:cpu@D00 {
304 device_type = "cpu";
305 compatible = "arm,armv8";
306 reg = <0xD00>;
307 enable-method = "psci";
308 clocks = <&scmi_dvfs 3>;
309 capacity-dmips-mhz = <BIG_CAPACITY>;
310 amu = <&amu>;
311 supports-mpmm;
312 };
313#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Usama Arifbec5afd2020-04-17 16:13:39 +0100314 };
315
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000316 reserved-memory {
317 #address-cells = <2>;
318 #size-cells = <2>;
319 ranges;
320
Anders Delliena6c9b722021-12-08 21:57:21 +0000321 linux,cma {
322 compatible = "shared-dma-pool";
323 reusable;
324 size = <0x0 0x8000000>;
325 linux,cma-default;
326 };
327
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000328 optee@f8e00000 {
Davidson K4662a882022-12-14 17:38:14 +0530329 compatible = "restricted-dma-pool";
Arunachalam Ganapathyac9e1202022-04-11 17:38:17 +0100330 reg = <0x00000000 0xf8e00000 0 0x00200000>;
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000331 };
Tudor Cretu77b301a2021-09-24 12:09:53 +0000332
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000333 fwu_mm@fca00000 {
Tudor Cretu77b301a2021-09-24 12:09:53 +0000334 reg = <0x00000000 0xfca00000 0 0x00400000>;
335 no-map;
336 };
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000337 };
338
Usama Arifbec5afd2020-04-17 16:13:39 +0100339 psci {
Usama Arif7a64bfa2021-05-27 20:09:17 +0100340 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Arifbec5afd2020-04-17 16:13:39 +0100341 method = "smc";
342 };
343
Boyan Karatotev4fef47c2023-11-15 11:29:59 +0000344 cpu-pmu {
345 compatible = "arm,armv8-pmuv3";
346 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
347 interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>,
348 <&CPU4>, <&CPU5>, <&CPU6>, <&CPU7>
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000349#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
350 ,<&CPU8>, <&CPU9>, <&CPU10>, <&CPU11>,
351 <&CPU12>, <&CPU13>
352#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Boyan Karatotev4fef47c2023-11-15 11:29:59 +0000353 ;
354 };
355
Usama Arifbec5afd2020-04-17 16:13:39 +0100356 sram: sram@6000000 {
357 compatible = "mmio-sram";
358 reg = <0x0 0x06000000 0x0 0x8000>;
359
360 #address-cells = <1>;
361 #size-cells = <1>;
362 ranges = <0 0x0 0x06000000 0x8000>;
363
364 cpu_scp_scmi_mem: scp-shmem@0 {
365 compatible = "arm,scmi-shmem";
366 reg = <0x0 0x80>;
367 };
368 };
369
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000370 mbox_db_rx: mhu@MHU_RX_ADDR() {
Usama Arifb315c702021-05-27 20:01:39 +0100371 compatible = "arm,mhuv2-rx","arm,primecell";
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000372 reg = <0x0 MHU_RX_ADDR(0x) 0x0 0x1000>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000373 clocks = <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100374 clock-names = "apb_pclk";
Usama Arifb315c702021-05-27 20:01:39 +0100375 #mbox-cells = <2>;
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000376 interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100377 interrupt-names = "mhu_rx";
378 mhu-protocol = "doorbell";
Usama Arifb315c702021-05-27 20:01:39 +0100379 arm,mhuv2-protocols = <0 1>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100380 };
381
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000382 mbox_db_tx: mhu@MHU_TX_ADDR() {
Usama Arifb315c702021-05-27 20:01:39 +0100383 compatible = "arm,mhuv2-tx","arm,primecell";
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000384 reg = <0x0 MHU_TX_ADDR(0x) 0x0 0x1000>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000385 clocks = <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100386 clock-names = "apb_pclk";
Usama Arifb315c702021-05-27 20:01:39 +0100387 #mbox-cells = <2>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100388 interrupt-names = "mhu_tx";
389 mhu-protocol = "doorbell";
Usama Arifb315c702021-05-27 20:01:39 +0100390 arm,mhuv2-protocols = <0 1>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100391 };
392
393 scmi {
394 compatible = "arm,scmi";
Usama Arifbec5afd2020-04-17 16:13:39 +0100395 mbox-names = "tx", "rx";
Usama Arifb315c702021-05-27 20:01:39 +0100396 mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >;
Usama Arifbec5afd2020-04-17 16:13:39 +0100397 shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>;
398 #address-cells = <1>;
399 #size-cells = <0>;
400
Ben Horgan80781a52023-07-26 20:45:27 +0100401 scmi_devpd: protocol@11 {
402 reg = <0x11>;
403 #power-domain-cells = <1>;
404 };
405
Usama Arifbec5afd2020-04-17 16:13:39 +0100406 scmi_dvfs: protocol@13 {
407 reg = <0x13>;
408 #clock-cells = <1>;
409 };
410
411 scmi_clk: protocol@14 {
412 reg = <0x14>;
413 #clock-cells = <1>;
414 };
415 };
416
Boyan Karatotev95562762023-11-15 11:54:33 +0000417 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000418 compatible = "arm,gic-v3";
Usama Arifbec5afd2020-04-17 16:13:39 +0100419 #address-cells = <2>;
420 #interrupt-cells = <3>;
421 #size-cells = <2>;
422 ranges;
423 interrupt-controller;
424 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev95562762023-11-15 11:54:33 +0000425 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100426 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100427 };
428
429 timer {
430 compatible = "arm,armv8-timer";
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100431 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
432 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
433 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
434 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100435 };
436
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000437 soc_refclk: refclk {
Usama Arifbec5afd2020-04-17 16:13:39 +0100438 compatible = "fixed-clock";
439 #clock-cells = <0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000440 clock-frequency = <1000000000>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100441 clock-output-names = "apb_pclk";
442 };
443
444 soc_refclk60mhz: refclk60mhz {
445 compatible = "fixed-clock";
446 #clock-cells = <0>;
447 clock-frequency = <60000000>;
448 clock-output-names = "iofpga_clk";
449 };
450
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000451 soc_uartclk: uartclk {
Usama Arifbec5afd2020-04-17 16:13:39 +0100452 compatible = "fixed-clock";
453 #clock-cells = <0>;
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000454 clock-frequency = <UARTCLK_FREQ>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100455 clock-output-names = "uartclk";
456 };
457
Boyan Karatotev95562762023-11-15 11:54:33 +0000458 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000459 os_uart: serial@2a400000 {
Usama Arifbec5afd2020-04-17 16:13:39 +0100460 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev95562762023-11-15 11:54:33 +0000461 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100462 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000463 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100464 clock-names = "uartclk", "apb_pclk";
465 status = "okay";
466 };
467
468 vencoder {
469 compatible = "drm,virtual-encoder";
Usama Arifbec5afd2020-04-17 16:13:39 +0100470 port {
471 vencoder_in: endpoint {
Avinash Mehtadf71a602020-07-22 16:40:07 +0100472 remote-endpoint = <&dp_pl0_out0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100473 };
474 };
475
476 display-timings {
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000477 timing-panel {
Boyan Karatotev95562762023-11-15 11:54:33 +0000478 VENCODER_TIMING;
Usama Arifbec5afd2020-04-17 16:13:39 +0100479 };
480 };
481
482 };
483
Usama Arifbec5afd2020-04-17 16:13:39 +0100484 ethernet@18000000 {
Boyan Karatotev95562762023-11-15 11:54:33 +0000485 compatible = ETH_COMPATIBLE;
Usama Arifbec5afd2020-04-17 16:13:39 +0100486 reg = <0x0 0x18000000 0x0 0x10000>;
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100487 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000488
489 /* FPGA only but will work on FVP. Keep for simplicity */
490 phy-mode = "mii";
491 reg-io-width = <2>;
492 smsc,irq-push-pull;
Usama Arifbec5afd2020-04-17 16:13:39 +0100493 };
494
Usama Arifbec5afd2020-04-17 16:13:39 +0100495 bp_clock24mhz: clock24mhz {
496 compatible = "fixed-clock";
497 #clock-cells = <0>;
498 clock-frequency = <24000000>;
499 clock-output-names = "bp:clock24mhz";
500 };
501
Usama Arifbec5afd2020-04-17 16:13:39 +0100502
Usama Arif1cd56dc2020-06-10 16:27:53 +0100503 sysreg: sysreg@1c010000 {
504 compatible = "arm,vexpress-sysreg";
505 reg = <0x0 0x001c010000 0x0 0x1000>;
506 gpio-controller;
507 #gpio-cells = <2>;
508 };
509
510 fixed_3v3: v2m-3v3 {
511 compatible = "regulator-fixed";
512 regulator-name = "3V3";
513 regulator-min-microvolt = <3300000>;
514 regulator-max-microvolt = <3300000>;
515 regulator-always-on;
516 };
517
518 mmci@1c050000 {
519 compatible = "arm,pl180", "arm,primecell";
520 reg = <0x0 0x001c050000 0x0 0x1000>;
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100521 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
522 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000523 MMC_REMOVABLE;
Usama Arif1cd56dc2020-06-10 16:27:53 +0100524 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000525 bus-width = <4>;
526 max-frequency = <25000000>;
Usama Arif1cd56dc2020-06-10 16:27:53 +0100527 vmmc-supply = <&fixed_3v3>;
528 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
529 clock-names = "mclk", "apb_pclk";
530 };
531
Rupinderjit Singhb2a75b82023-02-03 09:29:57 +0000532 gpu_clk: gpu_clk {
533 compatible = "fixed-clock";
534 #clock-cells = <0>;
535 clock-frequency = <1000000000>;
536 };
537
538 gpu_core_clk: gpu_core_clk {
539 compatible = "fixed-clock";
540 #clock-cells = <0>;
541 clock-frequency = <1000000000>;
542 };
543
Anders Dellien7a849802022-01-01 21:51:21 +0000544 gpu: gpu@2d000000 {
545 compatible = "arm,mali-midgard";
546 reg = <0x0 0x2d000000 0x0 0x200000>;
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100547 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
548 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
549 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anders Dellien7a849802022-01-01 21:51:21 +0000550 interrupt-names = "JOB", "MMU", "GPU";
Ben Horgan80781a52023-07-26 20:45:27 +0100551 clocks = <&gpu_core_clk>;
552 clock-names = "shadercores";
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000553 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan80781a52023-07-26 20:45:27 +0100554 scmi-perf-domain = <3>;
Davidson Kce633122022-11-21 17:49:51 +0530555 iommus = <&smmu_700 0x200>;
Anders Dellien7a849802022-01-01 21:51:21 +0000556 };
557
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000558 power_model_simple {
Rupinderjit Singhb2a75b82023-02-03 09:29:57 +0000559 /*
560 * Numbers used are irrelevant to Titan,
561 * it helps suppressing the kernel warnings.
562 */
563 compatible = "arm,mali-simple-power-model";
564 static-coefficient = <2427750>;
565 dynamic-coefficient = <4687>;
566 ts = <20000 2000 (-20) 2>;
567 thermal-zone = "";
568 };
569
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000570 smmu_700: iommu@3f000000 {
Anders Delliena1914132022-01-01 21:56:25 +0000571 #iommu-cells = <1>;
572 compatible = "arm,smmu-v3";
Davidson Kce633122022-11-21 17:49:51 +0530573 reg = <0x0 0x3f000000 0x0 0x5000000>;
Kshitij Sisodiab32a8f42023-08-16 09:46:05 +0100574 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
575 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>,
576 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>;
577 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Kce633122022-11-21 17:49:51 +0530578 dma-coherent;
Anders Delliena1914132022-01-01 21:56:25 +0000579 };
580
Usama Arifbec5afd2020-04-17 16:13:39 +0100581 dp0: display@2cc00000 {
582 #address-cells = <1>;
583 #size-cells = <0>;
584 compatible = "arm,mali-d71";
585 reg = <0 0x2cc00000 0 0x20000>;
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100586 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100587 interrupt-names = "DPU";
Boyan Karatotev95562762023-11-15 11:54:33 +0000588 DPU_CLK_ATTR1;
Davidson Kce633122022-11-21 17:49:51 +0530589 iommus = <&smmu_700 0x100>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000590 power-domains = <&scmi_devpd DPU_SCMI_PD_IDX>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100591 pl0: pipeline@0 {
592 reg = <0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000593 DPU_CLK_ATTR2;
Usama Arifbec5afd2020-04-17 16:13:39 +0100594 pl_id = <0>;
595 ports {
596 #address-cells = <1>;
597 #size-cells = <0>;
598 port@0 {
599 reg = <0>;
600 dp_pl0_out0: endpoint {
601 remote-endpoint = <&vencoder_in>;
602 };
603 };
604 };
605 };
606
607 pl1: pipeline@1 {
608 reg = <1>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000609 DPU_CLK_ATTR3;
Usama Arifbec5afd2020-04-17 16:13:39 +0100610 pl_id = <1>;
611 ports {
612 #address-cells = <1>;
613 #size-cells = <0>;
614 port@0 {
615 reg = <0>;
616 };
617 };
618 };
619 };
Arunachalam Ganapathyc44e43d2020-11-17 15:05:01 +0000620
Davidson K1ad2c412023-01-13 14:02:13 +0530621 /*
622 * L3 cache in the DSU is the Memory System Component (MSC)
623 * The MPAM registers are accessed through utility bus in the DSU
624 */
625 msc0 {
626 compatible = "arm,mpam-msc";
Boyan Karatotev6ed3bf62023-07-07 13:33:19 +0000627 reg = <MPAM_ADDR 0x0 0x2000>;
Davidson K1ad2c412023-01-13 14:02:13 +0530628 };
629
Davidson K65361052021-10-13 18:49:41 +0530630 ete0 {
631 compatible = "arm,embedded-trace-extension";
632 cpu = <&CPU0>;
633 };
634
635 ete1 {
636 compatible = "arm,embedded-trace-extension";
637 cpu = <&CPU1>;
638 };
639
640 ete2 {
641 compatible = "arm,embedded-trace-extension";
642 cpu = <&CPU2>;
643 };
644
645 ete3 {
646 compatible = "arm,embedded-trace-extension";
647 cpu = <&CPU3>;
648 };
649
650 ete4 {
651 compatible = "arm,embedded-trace-extension";
652 cpu = <&CPU4>;
653 };
654
655 ete5 {
656 compatible = "arm,embedded-trace-extension";
657 cpu = <&CPU5>;
658 };
659
660 ete6 {
661 compatible = "arm,embedded-trace-extension";
662 cpu = <&CPU6>;
663 };
664
665 ete7 {
666 compatible = "arm,embedded-trace-extension";
667 cpu = <&CPU7>;
668 };
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000669
670#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2
671 ete8 {
672 compatible = "arm,embedded-trace-extension";
673 cpu = <&CPU8>;
674 };
675
676 ete9 {
677 compatible = "arm,embedded-trace-extension";
678 cpu = <&CPU9>;
679 };
680
681 ete10 {
682 compatible = "arm,embedded-trace-extension";
683 cpu = <&CPU10>;
684 };
685
686 ete11 {
687 compatible = "arm,embedded-trace-extension";
688 cpu = <&CPU11>;
689 };
690
691 ete12 {
692 compatible = "arm,embedded-trace-extension";
693 cpu = <&CPU12>;
694 };
695
696 ete13 {
697 compatible = "arm,embedded-trace-extension";
698 cpu = <&CPU13>;
699 };
700#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */
Davidson K65361052021-10-13 18:49:41 +0530701
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000702 trbe {
Davidson K65361052021-10-13 18:49:41 +0530703 compatible = "arm,trace-buffer-extension";
Boyan Karatotev25c4fb72023-08-08 15:37:52 +0100704 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>;
Davidson K65361052021-10-13 18:49:41 +0530705 };
Arunachalam Ganapathy63128dc2022-04-11 14:43:15 +0100706
707 trusty {
708 #size-cells = <0x02>;
709 #address-cells = <0x02>;
710 ranges = <0x00>;
711 compatible = "android,trusty-v1";
712
713 virtio {
714 compatible = "android,trusty-virtio-v1";
715 };
716
717 test {
718 compatible = "android,trusty-test-v1";
719 };
720
721 log {
722 compatible = "android,trusty-log-v1";
723 };
724
725 irq {
726 ipi-range = <0x08 0x0f 0x08>;
727 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
728 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
729 compatible = "android,trusty-irq-v1";
730 };
731 };
Usama Arifbec5afd2020-04-17 16:13:39 +0100732};