blob: 7d5a8dd14ab1aad663f39a85b5c3c7a9c2d164f0 [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 };
Usama Ariff5c58af2020-04-17 16:13:39 +010065 };
66 };
67
Usama Arif8ea4f802020-08-12 17:14:37 +010068 /*
69 * The timings below are just to demonstrate working cpuidle.
70 * These values may be inaccurate.
71 */
72 idle-states {
Boyan Karatotev04274142023-11-14 13:57:56 +000073 entry-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +010074
75 CPU_SLEEP_0: cpu-sleep-0 {
76 compatible = "arm,idle-state";
77 arm,psci-suspend-param = <0x0010000>;
78 local-timer-stop;
79 entry-latency-us = <300>;
80 exit-latency-us = <1200>;
81 min-residency-us = <2000>;
82 };
83 CLUSTER_SLEEP_0: cluster-sleep-0 {
84 compatible = "arm,idle-state";
85 arm,psci-suspend-param = <0x1010000>;
86 local-timer-stop;
87 entry-latency-us = <400>;
88 exit-latency-us = <1200>;
89 min-residency-us = <2500>;
90 };
91 };
92
Chris Kayc19a82b2021-05-18 18:49:51 +010093 amus {
94 amu: amu-0 {
95 #address-cells = <1>;
96 #size-cells = <0>;
97
98 mpmm_gear0: counter@0 {
99 reg = <0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100100 enable-at-el3;
101 };
102
103 mpmm_gear1: counter@1 {
104 reg = <1>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100105 enable-at-el3;
106 };
107
108 mpmm_gear2: counter@2 {
109 reg = <2>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100110 enable-at-el3;
111 };
112 };
113 };
114
Usama Ariff5c58af2020-04-17 16:13:39 +0100115 CPU0:cpu@0 {
116 device_type = "cpu";
117 compatible = "arm,armv8";
118 reg = <0x0>;
119 enable-method = "psci";
120 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100121 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000122 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100123 amu = <&amu>;
124 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100125 };
126
127 CPU1:cpu@100 {
128 device_type = "cpu";
129 compatible = "arm,armv8";
130 reg = <0x100>;
131 enable-method = "psci";
132 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100133 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000134 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100135 amu = <&amu>;
136 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100137 };
138
139 CPU2:cpu@200 {
140 device_type = "cpu";
141 compatible = "arm,armv8";
142 reg = <0x200>;
143 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100144 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100145 amu = <&amu>;
146 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100147 };
148
149 CPU3:cpu@300 {
150 device_type = "cpu";
151 compatible = "arm,armv8";
152 reg = <0x300>;
153 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100154 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100155 amu = <&amu>;
156 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100157 };
158
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000159 CPU4:cpu@400 {
160 device_type = "cpu";
161 compatible = "arm,armv8";
162 reg = <0x400>;
163 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000164 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000165 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000166 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100167 amu = <&amu>;
168 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000169 };
170
171 CPU5:cpu@500 {
172 device_type = "cpu";
173 compatible = "arm,armv8";
174 reg = <0x500>;
175 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000176 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000177 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000178 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100179 amu = <&amu>;
180 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000181 };
182
183 CPU6:cpu@600 {
184 device_type = "cpu";
185 compatible = "arm,armv8";
186 reg = <0x600>;
187 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000188 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100189 amu = <&amu>;
190 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000191 };
192
193 CPU7:cpu@700 {
194 device_type = "cpu";
195 compatible = "arm,armv8";
196 reg = <0x700>;
197 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000198 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100199 amu = <&amu>;
200 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000201 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100202 };
203
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000204 reserved-memory {
205 #address-cells = <2>;
206 #size-cells = <2>;
207 ranges;
208
Anders Dellienad60a422021-12-08 21:57:21 +0000209 linux,cma {
210 compatible = "shared-dma-pool";
211 reusable;
212 size = <0x0 0x8000000>;
213 linux,cma-default;
214 };
215
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000216 optee {
Davidson K2fff46c2022-12-14 17:38:14 +0530217 compatible = "restricted-dma-pool";
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000218 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000219 };
Tudor Cretud0628722021-09-24 12:09:53 +0000220
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000221 fwu_mm {
222 reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>;
Tudor Cretud0628722021-09-24 12:09:53 +0000223 no-map;
224 };
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000225 };
226
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000227 memory {
228 device_type = "memory";
229 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
230 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
231 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
232 };
233
Usama Ariff5c58af2020-04-17 16:13:39 +0100234 psci {
Usama Arif814646b2021-05-27 20:09:17 +0100235 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Ariff5c58af2020-04-17 16:13:39 +0100236 method = "smc";
237 };
238
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000239 cpu-pmu {
240 compatible = "arm,armv8-pmuv3";
241 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000242 };
243
Usama Ariff5c58af2020-04-17 16:13:39 +0100244 sram: sram@6000000 {
245 compatible = "mmio-sram";
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000246 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100247
248 #address-cells = <1>;
249 #size-cells = <1>;
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000250 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100251
252 cpu_scp_scmi_mem: scp-shmem@0 {
253 compatible = "arm,scmi-shmem";
254 reg = <0x0 0x80>;
255 };
256 };
257
Leo Yanab0450f2024-04-15 09:05:34 +0100258 mbox_db_rx: mhu@MHU_RX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100259 compatible = "arm,mhuv2-rx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100260 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000261 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100262 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100263 #mbox-cells = <2>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000264 interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100265 interrupt-names = "mhu_rx";
266 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100267 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100268 };
269
Leo Yanab0450f2024-04-15 09:05:34 +0100270 mbox_db_tx: mhu@MHU_TX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100271 compatible = "arm,mhuv2-tx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100272 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000273 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100274 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100275 #mbox-cells = <2>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100276 interrupt-names = "mhu_tx";
277 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100278 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100279 };
280
281 scmi {
282 compatible = "arm,scmi";
Usama Ariff5c58af2020-04-17 16:13:39 +0100283 mbox-names = "tx", "rx";
Usama Arif63067ce2021-05-27 20:01:39 +0100284 mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >;
Usama Ariff5c58af2020-04-17 16:13:39 +0100285 shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>;
286 #address-cells = <1>;
287 #size-cells = <0>;
288
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000289#if TC_SCMI_PD_CTRL_EN
Ben Horgan127eabe2023-07-26 20:45:27 +0100290 scmi_devpd: protocol@11 {
291 reg = <0x11>;
292 #power-domain-cells = <1>;
293 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000294#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan127eabe2023-07-26 20:45:27 +0100295
Usama Ariff5c58af2020-04-17 16:13:39 +0100296 scmi_dvfs: protocol@13 {
297 reg = <0x13>;
298 #clock-cells = <1>;
299 };
300
301 scmi_clk: protocol@14 {
302 reg = <0x14>;
303 #clock-cells = <1>;
304 };
305 };
306
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000307 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev04274142023-11-14 13:57:56 +0000308 compatible = "arm,gic-v3";
Usama Ariff5c58af2020-04-17 16:13:39 +0100309 #address-cells = <2>;
310 #interrupt-cells = <3>;
311 #size-cells = <2>;
312 ranges;
313 interrupt-controller;
314 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000315 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100316 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100317 };
318
319 timer {
320 compatible = "arm,armv8-timer";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100321 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
322 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
323 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
324 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100325 };
326
Boyan Karatotev04274142023-11-14 13:57:56 +0000327 soc_refclk: refclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100328 compatible = "fixed-clock";
329 #clock-cells = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000330 clock-frequency = <1000000000>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100331 clock-output-names = "apb_pclk";
332 };
333
334 soc_refclk60mhz: refclk60mhz {
335 compatible = "fixed-clock";
336 #clock-cells = <0>;
337 clock-frequency = <60000000>;
338 clock-output-names = "iofpga_clk";
339 };
340
Boyan Karatotev04274142023-11-14 13:57:56 +0000341 soc_uartclk: uartclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100342 compatible = "fixed-clock";
343 #clock-cells = <0>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000344 clock-frequency = <UARTCLK_FREQ>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100345 clock-output-names = "uartclk";
346 };
347
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000348 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev04274142023-11-14 13:57:56 +0000349 os_uart: serial@2a400000 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100350 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000351 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100352 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000353 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100354 clock-names = "uartclk", "apb_pclk";
355 status = "okay";
356 };
357
358 vencoder {
359 compatible = "drm,virtual-encoder";
Usama Ariff5c58af2020-04-17 16:13:39 +0100360 port {
361 vencoder_in: endpoint {
Avinash Mehta0dc52292020-07-22 16:40:07 +0100362 remote-endpoint = <&dp_pl0_out0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100363 };
364 };
365
366 display-timings {
Boyan Karatotev04274142023-11-14 13:57:56 +0000367 timing-panel {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000368 VENCODER_TIMING;
Usama Ariff5c58af2020-04-17 16:13:39 +0100369 };
370 };
371
372 };
373
Usama Ariff5c58af2020-04-17 16:13:39 +0100374 ethernet@18000000 {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000375 compatible = ETH_COMPATIBLE;
Usama Ariff5c58af2020-04-17 16:13:39 +0100376 reg = <0x0 0x18000000 0x0 0x10000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100377 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000378
379 /* FPGA only but will work on FVP. Keep for simplicity */
380 phy-mode = "mii";
381 reg-io-width = <2>;
382 smsc,irq-push-pull;
Usama Ariff5c58af2020-04-17 16:13:39 +0100383 };
384
Usama Ariff5c58af2020-04-17 16:13:39 +0100385 bp_clock24mhz: clock24mhz {
386 compatible = "fixed-clock";
387 #clock-cells = <0>;
388 clock-frequency = <24000000>;
389 clock-output-names = "bp:clock24mhz";
390 };
391
Usama Ariff5c58af2020-04-17 16:13:39 +0100392
Usama Arifa41973a2020-06-10 16:27:53 +0100393 sysreg: sysreg@1c010000 {
394 compatible = "arm,vexpress-sysreg";
395 reg = <0x0 0x001c010000 0x0 0x1000>;
396 gpio-controller;
397 #gpio-cells = <2>;
398 };
399
400 fixed_3v3: v2m-3v3 {
401 compatible = "regulator-fixed";
402 regulator-name = "3V3";
403 regulator-min-microvolt = <3300000>;
404 regulator-max-microvolt = <3300000>;
405 regulator-always-on;
406 };
407
408 mmci@1c050000 {
409 compatible = "arm,pl180", "arm,primecell";
410 reg = <0x0 0x001c050000 0x0 0x1000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100411 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
412 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000413 MMC_REMOVABLE;
Usama Arifa41973a2020-06-10 16:27:53 +0100414 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000415 bus-width = <4>;
416 max-frequency = <25000000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100417 vmmc-supply = <&fixed_3v3>;
418 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
419 clock-names = "mclk", "apb_pclk";
420 };
421
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000422 gpu_clk: gpu_clk {
423 compatible = "fixed-clock";
424 #clock-cells = <0>;
425 clock-frequency = <1000000000>;
426 };
427
428 gpu_core_clk: gpu_core_clk {
429 compatible = "fixed-clock";
430 #clock-cells = <0>;
431 clock-frequency = <1000000000>;
432 };
433
Anders Dellien82117bb2022-01-01 21:51:21 +0000434 gpu: gpu@2d000000 {
435 compatible = "arm,mali-midgard";
436 reg = <0x0 0x2d000000 0x0 0x200000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100437 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
438 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
439 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anders Dellien82117bb2022-01-01 21:51:21 +0000440 interrupt-names = "JOB", "MMU", "GPU";
Ben Horgan127eabe2023-07-26 20:45:27 +0100441 clocks = <&gpu_core_clk>;
442 clock-names = "shadercores";
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000443#if TC_SCMI_PD_CTRL_EN
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000444 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan127eabe2023-07-26 20:45:27 +0100445 scmi-perf-domain = <3>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000446#endif /* TC_SCMI_PD_CTRL_EN */
447
448#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530449 iommus = <&smmu_700 0x200>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000450#endif /* TC_IOMMU_EN */
Anders Dellien82117bb2022-01-01 21:51:21 +0000451 };
452
Boyan Karatotev04274142023-11-14 13:57:56 +0000453 power_model_simple {
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000454 /*
455 * Numbers used are irrelevant to Titan,
456 * it helps suppressing the kernel warnings.
457 */
458 compatible = "arm,mali-simple-power-model";
459 static-coefficient = <2427750>;
460 dynamic-coefficient = <4687>;
461 ts = <20000 2000 (-20) 2>;
462 thermal-zone = "";
463 };
464
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000465#if TC_IOMMU_EN
Boyan Karatotev04274142023-11-14 13:57:56 +0000466 smmu_700: iommu@3f000000 {
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000467 #iommu-cells = <1>;
468 compatible = "arm,smmu-v3";
Davidson Ked80eab2022-11-21 17:49:51 +0530469 reg = <0x0 0x3f000000 0x0 0x5000000>;
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +0100470 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
471 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>,
472 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>;
473 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Ked80eab2022-11-21 17:49:51 +0530474 dma-coherent;
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000475 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000476#endif /* TC_IOMMU_EN */
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000477
Leo Yanab0450f2024-04-15 09:05:34 +0100478 dp0: display@DPU_ADDR {
Usama Ariff5c58af2020-04-17 16:13:39 +0100479 #address-cells = <1>;
480 #size-cells = <0>;
481 compatible = "arm,mali-d71";
Leo Yanab0450f2024-04-15 09:05:34 +0100482 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Davidson K8e941632023-12-14 12:03:23 +0530483 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100484 interrupt-names = "DPU";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000485 DPU_CLK_ATTR1;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000486#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530487 iommus = <&smmu_700 0x100>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000488#endif /* TC_IOMMU_EN */
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000489
Usama Ariff5c58af2020-04-17 16:13:39 +0100490 pl0: pipeline@0 {
491 reg = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000492 DPU_CLK_ATTR2;
Usama Ariff5c58af2020-04-17 16:13:39 +0100493 pl_id = <0>;
494 ports {
495 #address-cells = <1>;
496 #size-cells = <0>;
497 port@0 {
498 reg = <0>;
499 dp_pl0_out0: endpoint {
500 remote-endpoint = <&vencoder_in>;
501 };
502 };
503 };
504 };
505
506 pl1: pipeline@1 {
507 reg = <1>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000508 DPU_CLK_ATTR3;
Usama Ariff5c58af2020-04-17 16:13:39 +0100509 pl_id = <1>;
510 ports {
511 #address-cells = <1>;
512 #size-cells = <0>;
513 port@0 {
514 reg = <0>;
515 };
516 };
517 };
518 };
Arunachalam Ganapathy39460d02020-11-17 15:05:01 +0000519
Davidson Kb45ec8c2023-01-13 14:02:13 +0530520 /*
521 * L3 cache in the DSU is the Memory System Component (MSC)
522 * The MPAM registers are accessed through utility bus in the DSU
523 */
524 msc0 {
525 compatible = "arm,mpam-msc";
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000526 reg = <MPAM_ADDR 0x0 0x2000>;
Davidson Kb45ec8c2023-01-13 14:02:13 +0530527 };
528
Davidson K59da2072021-10-13 18:49:41 +0530529 ete0 {
530 compatible = "arm,embedded-trace-extension";
531 cpu = <&CPU0>;
532 };
533
534 ete1 {
535 compatible = "arm,embedded-trace-extension";
536 cpu = <&CPU1>;
537 };
538
539 ete2 {
540 compatible = "arm,embedded-trace-extension";
541 cpu = <&CPU2>;
542 };
543
544 ete3 {
545 compatible = "arm,embedded-trace-extension";
546 cpu = <&CPU3>;
547 };
548
549 ete4 {
550 compatible = "arm,embedded-trace-extension";
551 cpu = <&CPU4>;
552 };
553
554 ete5 {
555 compatible = "arm,embedded-trace-extension";
556 cpu = <&CPU5>;
557 };
558
559 ete6 {
560 compatible = "arm,embedded-trace-extension";
561 cpu = <&CPU6>;
562 };
563
564 ete7 {
565 compatible = "arm,embedded-trace-extension";
566 cpu = <&CPU7>;
567 };
568
Boyan Karatotev04274142023-11-14 13:57:56 +0000569 trbe {
Davidson K59da2072021-10-13 18:49:41 +0530570 compatible = "arm,trace-buffer-extension";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100571 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>;
Davidson K59da2072021-10-13 18:49:41 +0530572 };
Arunachalam Ganapathyba197f52022-04-11 14:43:15 +0100573
574 trusty {
575 #size-cells = <0x02>;
576 #address-cells = <0x02>;
577 ranges = <0x00>;
578 compatible = "android,trusty-v1";
579
580 virtio {
581 compatible = "android,trusty-virtio-v1";
582 };
583
584 test {
585 compatible = "android,trusty-test-v1";
586 };
587
588 log {
589 compatible = "android,trusty-log-v1";
590 };
591
592 irq {
593 ipi-range = <0x08 0x0f 0x08>;
594 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
595 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
596 compatible = "android,trusty-irq-v1";
597 };
598 };
Boyan Karatotev4fc4e9c2023-11-28 16:08:52 +0000599
600 /* used in U-boot, Linux doesn't care */
601 arm_ffa {
602 compatible = "arm,ffa";
603 method = "smc";
604 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100605};