blob: 15e4a002e438f60fb4ee3b4675bd9b82e01c2f04 [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
Leo Yan79c6ede2024-04-24 10:03:50 +01007/* If SCMI power domain control is enabled */
8#if TC_SCMI_PD_CTRL_EN
9#define GPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 1)
10#define DPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 2)
11#endif /* TC_SCMI_PD_CTRL_EN */
12
13/* Use SCMI controlled clocks */
14#if TC_DPU_USE_SCMI_CLK
15#define DPU_CLK_ATTR1 \
16 clocks = <&scmi_clk 0>; \
17 clock-names = "aclk"
18
19#define DPU_CLK_ATTR2 \
20 clocks = <&scmi_clk 1>; \
21 clock-names = "pxclk"
22
23#define DPU_CLK_ATTR3 \
24 clocks = <&scmi_clk 2>; \
25 clock-names = "pxclk" \
26/* Use fixed clocks */
27#else /* !TC_DPU_USE_SCMI_CLK */
28#define DPU_CLK_ATTR1 \
29 clocks = <&dpu_aclk>; \
30 clock-names = "aclk"
31
32#define DPU_CLK_ATTR2 \
33 clocks = <&dpu_pixel_clk>, <&dpu_aclk>; \
34 clock-names = "pxclk", "aclk"
35
36#define DPU_CLK_ATTR3 DPU_CLK_ATTR2
37#endif /* !TC_DPU_USE_SCMI_CLK */
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +010038
Usama Ariff5c58af2020-04-17 16:13:39 +010039/ {
Usama Arif6ec0c652021-04-09 17:07:41 +010040 compatible = "arm,tc";
Usama Ariff5c58af2020-04-17 16:13:39 +010041 interrupt-parent = <&gic>;
42 #address-cells = <2>;
43 #size-cells = <2>;
44
45 aliases {
Boyan Karatotev04274142023-11-14 13:57:56 +000046 serial0 = &os_uart;
Usama Ariff5c58af2020-04-17 16:13:39 +010047 };
48
49 chosen {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +000050 stdout-path = STDOUT_PATH;
Ben Horganbafedcb2023-12-11 16:01:10 +000051 /*
52 * Add some dummy entropy for Linux so it
53 * doesn't delay the boot waiting for it.
54 */
55 rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
56 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
57 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
58 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
59 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
60 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
61 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
62 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >;
Usama Ariff5c58af2020-04-17 16:13:39 +010063 };
64
65 cpus {
66 #address-cells = <1>;
67 #size-cells = <0>;
68
69 cpu-map {
70 cluster0 {
71 core0 {
72 cpu = <&CPU0>;
73 };
74 core1 {
75 cpu = <&CPU1>;
76 };
77 core2 {
78 cpu = <&CPU2>;
79 };
80 core3 {
81 cpu = <&CPU3>;
82 };
Avinash Mehtae5da15e2020-10-28 16:43:28 +000083 core4 {
84 cpu = <&CPU4>;
85 };
86 core5 {
87 cpu = <&CPU5>;
88 };
89 core6 {
90 cpu = <&CPU6>;
91 };
92 core7 {
93 cpu = <&CPU7>;
94 };
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>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100175 amu = <&amu>;
176 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100177 };
178
179 CPU3:cpu@300 {
180 device_type = "cpu";
181 compatible = "arm,armv8";
182 reg = <0x300>;
183 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100184 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100185 amu = <&amu>;
186 supports-mpmm;
Usama Ariff5c58af2020-04-17 16:13:39 +0100187 };
188
Avinash Mehtae5da15e2020-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 Arifa97c3902021-02-03 15:40:46 +0000194 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000195 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000196 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100197 amu = <&amu>;
198 supports-mpmm;
Avinash Mehtae5da15e2020-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 Arifa97c3902021-02-03 15:40:46 +0000206 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000207 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000208 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100209 amu = <&amu>;
210 supports-mpmm;
Avinash Mehtae5da15e2020-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 Mehtae5da15e2020-10-28 16:43:28 +0000218 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100219 amu = <&amu>;
220 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000221 };
222
223 CPU7:cpu@700 {
224 device_type = "cpu";
225 compatible = "arm,armv8";
226 reg = <0x700>;
227 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000228 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100229 amu = <&amu>;
230 supports-mpmm;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000231 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100232 };
233
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000234 reserved-memory {
235 #address-cells = <2>;
236 #size-cells = <2>;
237 ranges;
238
Anders Dellienad60a422021-12-08 21:57:21 +0000239 linux,cma {
240 compatible = "shared-dma-pool";
241 reusable;
242 size = <0x0 0x8000000>;
243 linux,cma-default;
244 };
245
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000246 optee {
Davidson K2fff46c2022-12-14 17:38:14 +0530247 compatible = "restricted-dma-pool";
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000248 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000249 };
Tudor Cretud0628722021-09-24 12:09:53 +0000250
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000251 fwu_mm {
252 reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>;
Tudor Cretud0628722021-09-24 12:09:53 +0000253 no-map;
254 };
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000255 };
256
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000257 memory {
258 device_type = "memory";
259 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
260 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
261 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
262 };
263
Usama Ariff5c58af2020-04-17 16:13:39 +0100264 psci {
Usama Arif814646b2021-05-27 20:09:17 +0100265 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Ariff5c58af2020-04-17 16:13:39 +0100266 method = "smc";
267 };
268
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000269 cpu-pmu {
270 compatible = "arm,armv8-pmuv3";
271 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000272 };
273
Usama Ariff5c58af2020-04-17 16:13:39 +0100274 sram: sram@6000000 {
275 compatible = "mmio-sram";
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000276 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100277
278 #address-cells = <1>;
279 #size-cells = <1>;
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000280 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100281
282 cpu_scp_scmi_mem: scp-shmem@0 {
283 compatible = "arm,scmi-shmem";
284 reg = <0x0 0x80>;
285 };
286 };
287
Leo Yanab0450f2024-04-15 09:05:34 +0100288 mbox_db_rx: mhu@MHU_RX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100289 compatible = "arm,mhuv2-rx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100290 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000291 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100292 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100293 #mbox-cells = <2>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000294 interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100295 interrupt-names = "mhu_rx";
296 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100297 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100298 };
299
Leo Yanab0450f2024-04-15 09:05:34 +0100300 mbox_db_tx: mhu@MHU_TX_ADDR {
Usama Arif63067ce2021-05-27 20:01:39 +0100301 compatible = "arm,mhuv2-tx","arm,primecell";
Leo Yanab0450f2024-04-15 09:05:34 +0100302 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 0x1000>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000303 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100304 clock-names = "apb_pclk";
Usama Arif63067ce2021-05-27 20:01:39 +0100305 #mbox-cells = <2>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100306 interrupt-names = "mhu_tx";
307 mhu-protocol = "doorbell";
Usama Arif63067ce2021-05-27 20:01:39 +0100308 arm,mhuv2-protocols = <0 1>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100309 };
310
311 scmi {
312 compatible = "arm,scmi";
Usama Ariff5c58af2020-04-17 16:13:39 +0100313 mbox-names = "tx", "rx";
Usama Arif63067ce2021-05-27 20:01:39 +0100314 mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >;
Usama Ariff5c58af2020-04-17 16:13:39 +0100315 shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>;
316 #address-cells = <1>;
317 #size-cells = <0>;
318
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000319#if TC_SCMI_PD_CTRL_EN
Ben Horgan127eabe2023-07-26 20:45:27 +0100320 scmi_devpd: protocol@11 {
321 reg = <0x11>;
322 #power-domain-cells = <1>;
323 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000324#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan127eabe2023-07-26 20:45:27 +0100325
Usama Ariff5c58af2020-04-17 16:13:39 +0100326 scmi_dvfs: protocol@13 {
327 reg = <0x13>;
328 #clock-cells = <1>;
329 };
330
331 scmi_clk: protocol@14 {
332 reg = <0x14>;
333 #clock-cells = <1>;
334 };
335 };
336
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000337 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev04274142023-11-14 13:57:56 +0000338 compatible = "arm,gic-v3";
Usama Ariff5c58af2020-04-17 16:13:39 +0100339 #address-cells = <2>;
340 #interrupt-cells = <3>;
341 #size-cells = <2>;
342 ranges;
343 interrupt-controller;
344 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000345 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100346 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100347 };
348
349 timer {
350 compatible = "arm,armv8-timer";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100351 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
352 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
353 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
354 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100355 };
356
Boyan Karatotev04274142023-11-14 13:57:56 +0000357 soc_refclk: refclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100358 compatible = "fixed-clock";
359 #clock-cells = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000360 clock-frequency = <1000000000>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100361 clock-output-names = "apb_pclk";
362 };
363
364 soc_refclk60mhz: refclk60mhz {
365 compatible = "fixed-clock";
366 #clock-cells = <0>;
367 clock-frequency = <60000000>;
368 clock-output-names = "iofpga_clk";
369 };
370
Boyan Karatotev04274142023-11-14 13:57:56 +0000371 soc_uartclk: uartclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100372 compatible = "fixed-clock";
373 #clock-cells = <0>;
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000374 clock-frequency = <UARTCLK_FREQ>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100375 clock-output-names = "uartclk";
376 };
377
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000378 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev04274142023-11-14 13:57:56 +0000379 os_uart: serial@2a400000 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100380 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000381 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100382 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000383 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100384 clock-names = "uartclk", "apb_pclk";
385 status = "okay";
386 };
387
Leo Yan79c6ede2024-04-24 10:03:50 +0100388#if !TC_DPU_USE_SCMI_CLK
389 dpu_aclk: dpu_aclk {
390 compatible = "fixed-clock";
391 #clock-cells = <0>;
392 clock-frequency = <VENCODER_TIMING_CLK>;
393 clock-output-names = "fpga:dpu_aclk";
394 };
395
396 dpu_pixel_clk: dpu-pixel-clk {
397 compatible = "fixed-clock";
398 #clock-cells = <0>;
399 clock-frequency = <VENCODER_TIMING_CLK>;
400 clock-output-names = "pxclk";
401 };
402#endif /* !TC_DPU_USE_SCMI_CLK */
403
Usama Ariff5c58af2020-04-17 16:13:39 +0100404 vencoder {
405 compatible = "drm,virtual-encoder";
Usama Ariff5c58af2020-04-17 16:13:39 +0100406 port {
407 vencoder_in: endpoint {
Avinash Mehta0dc52292020-07-22 16:40:07 +0100408 remote-endpoint = <&dp_pl0_out0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100409 };
410 };
411
412 display-timings {
Boyan Karatotev04274142023-11-14 13:57:56 +0000413 timing-panel {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000414 VENCODER_TIMING;
Usama Ariff5c58af2020-04-17 16:13:39 +0100415 };
416 };
417
418 };
419
Usama Ariff5c58af2020-04-17 16:13:39 +0100420 ethernet@18000000 {
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000421 compatible = ETH_COMPATIBLE;
Usama Ariff5c58af2020-04-17 16:13:39 +0100422 reg = <0x0 0x18000000 0x0 0x10000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100423 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000424
425 /* FPGA only but will work on FVP. Keep for simplicity */
426 phy-mode = "mii";
427 reg-io-width = <2>;
428 smsc,irq-push-pull;
Usama Ariff5c58af2020-04-17 16:13:39 +0100429 };
430
Usama Ariff5c58af2020-04-17 16:13:39 +0100431 bp_clock24mhz: clock24mhz {
432 compatible = "fixed-clock";
433 #clock-cells = <0>;
434 clock-frequency = <24000000>;
435 clock-output-names = "bp:clock24mhz";
436 };
437
Usama Ariff5c58af2020-04-17 16:13:39 +0100438
Usama Arifa41973a2020-06-10 16:27:53 +0100439 sysreg: sysreg@1c010000 {
440 compatible = "arm,vexpress-sysreg";
441 reg = <0x0 0x001c010000 0x0 0x1000>;
442 gpio-controller;
443 #gpio-cells = <2>;
444 };
445
446 fixed_3v3: v2m-3v3 {
447 compatible = "regulator-fixed";
448 regulator-name = "3V3";
449 regulator-min-microvolt = <3300000>;
450 regulator-max-microvolt = <3300000>;
451 regulator-always-on;
452 };
453
454 mmci@1c050000 {
455 compatible = "arm,pl180", "arm,primecell";
456 reg = <0x0 0x001c050000 0x0 0x1000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100457 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
458 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000459 MMC_REMOVABLE;
Usama Arifa41973a2020-06-10 16:27:53 +0100460 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000461 bus-width = <4>;
462 max-frequency = <25000000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100463 vmmc-supply = <&fixed_3v3>;
464 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
465 clock-names = "mclk", "apb_pclk";
466 };
467
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000468 gpu_clk: gpu_clk {
469 compatible = "fixed-clock";
470 #clock-cells = <0>;
471 clock-frequency = <1000000000>;
472 };
473
474 gpu_core_clk: gpu_core_clk {
475 compatible = "fixed-clock";
476 #clock-cells = <0>;
477 clock-frequency = <1000000000>;
478 };
479
Anders Dellien82117bb2022-01-01 21:51:21 +0000480 gpu: gpu@2d000000 {
481 compatible = "arm,mali-midgard";
482 reg = <0x0 0x2d000000 0x0 0x200000>;
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100483 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
484 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
485 <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Anders Dellien82117bb2022-01-01 21:51:21 +0000486 interrupt-names = "JOB", "MMU", "GPU";
Ben Horgan127eabe2023-07-26 20:45:27 +0100487 clocks = <&gpu_core_clk>;
488 clock-names = "shadercores";
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000489#if TC_SCMI_PD_CTRL_EN
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000490 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan127eabe2023-07-26 20:45:27 +0100491 scmi-perf-domain = <3>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000492#endif /* TC_SCMI_PD_CTRL_EN */
493
494#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530495 iommus = <&smmu_700 0x200>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000496#endif /* TC_IOMMU_EN */
Anders Dellien82117bb2022-01-01 21:51:21 +0000497 };
498
Boyan Karatotev04274142023-11-14 13:57:56 +0000499 power_model_simple {
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000500 /*
501 * Numbers used are irrelevant to Titan,
502 * it helps suppressing the kernel warnings.
503 */
504 compatible = "arm,mali-simple-power-model";
505 static-coefficient = <2427750>;
506 dynamic-coefficient = <4687>;
507 ts = <20000 2000 (-20) 2>;
508 thermal-zone = "";
509 };
510
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000511#if TC_IOMMU_EN
Boyan Karatotev04274142023-11-14 13:57:56 +0000512 smmu_700: iommu@3f000000 {
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000513 #iommu-cells = <1>;
514 compatible = "arm,smmu-v3";
Davidson Ked80eab2022-11-21 17:49:51 +0530515 reg = <0x0 0x3f000000 0x0 0x5000000>;
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +0100516 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
517 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>,
518 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>;
519 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Ked80eab2022-11-21 17:49:51 +0530520 dma-coherent;
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000521 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000522#endif /* TC_IOMMU_EN */
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000523
Leo Yanab0450f2024-04-15 09:05:34 +0100524 dp0: display@DPU_ADDR {
Usama Ariff5c58af2020-04-17 16:13:39 +0100525 #address-cells = <1>;
526 #size-cells = <0>;
527 compatible = "arm,mali-d71";
Leo Yanab0450f2024-04-15 09:05:34 +0100528 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Davidson K8e941632023-12-14 12:03:23 +0530529 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100530 interrupt-names = "DPU";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000531 DPU_CLK_ATTR1;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000532#if TC_IOMMU_EN
Davidson Ked80eab2022-11-21 17:49:51 +0530533 iommus = <&smmu_700 0x100>;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000534#endif /* TC_IOMMU_EN */
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000535
Usama Ariff5c58af2020-04-17 16:13:39 +0100536 pl0: pipeline@0 {
537 reg = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000538 DPU_CLK_ATTR2;
Usama Ariff5c58af2020-04-17 16:13:39 +0100539 pl_id = <0>;
540 ports {
541 #address-cells = <1>;
542 #size-cells = <0>;
543 port@0 {
544 reg = <0>;
545 dp_pl0_out0: endpoint {
546 remote-endpoint = <&vencoder_in>;
547 };
548 };
549 };
550 };
551
552 pl1: pipeline@1 {
553 reg = <1>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000554 DPU_CLK_ATTR3;
Usama Ariff5c58af2020-04-17 16:13:39 +0100555 pl_id = <1>;
556 ports {
557 #address-cells = <1>;
558 #size-cells = <0>;
559 port@0 {
560 reg = <0>;
561 };
562 };
563 };
564 };
Arunachalam Ganapathy39460d02020-11-17 15:05:01 +0000565
Davidson Kb45ec8c2023-01-13 14:02:13 +0530566 /*
567 * L3 cache in the DSU is the Memory System Component (MSC)
568 * The MPAM registers are accessed through utility bus in the DSU
569 */
570 msc0 {
571 compatible = "arm,mpam-msc";
Boyan Karatotev62320dc2023-07-07 13:33:19 +0000572 reg = <MPAM_ADDR 0x0 0x2000>;
Davidson Kb45ec8c2023-01-13 14:02:13 +0530573 };
574
Davidson K59da2072021-10-13 18:49:41 +0530575 ete0 {
576 compatible = "arm,embedded-trace-extension";
577 cpu = <&CPU0>;
578 };
579
580 ete1 {
581 compatible = "arm,embedded-trace-extension";
582 cpu = <&CPU1>;
583 };
584
585 ete2 {
586 compatible = "arm,embedded-trace-extension";
587 cpu = <&CPU2>;
588 };
589
590 ete3 {
591 compatible = "arm,embedded-trace-extension";
592 cpu = <&CPU3>;
593 };
594
595 ete4 {
596 compatible = "arm,embedded-trace-extension";
597 cpu = <&CPU4>;
598 };
599
600 ete5 {
601 compatible = "arm,embedded-trace-extension";
602 cpu = <&CPU5>;
603 };
604
605 ete6 {
606 compatible = "arm,embedded-trace-extension";
607 cpu = <&CPU6>;
608 };
609
610 ete7 {
611 compatible = "arm,embedded-trace-extension";
612 cpu = <&CPU7>;
613 };
614
Boyan Karatotev04274142023-11-14 13:57:56 +0000615 trbe {
Davidson K59da2072021-10-13 18:49:41 +0530616 compatible = "arm,trace-buffer-extension";
Boyan Karatotevd2e44e72023-08-08 15:37:52 +0100617 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>;
Davidson K59da2072021-10-13 18:49:41 +0530618 };
Arunachalam Ganapathyba197f52022-04-11 14:43:15 +0100619
620 trusty {
621 #size-cells = <0x02>;
622 #address-cells = <0x02>;
623 ranges = <0x00>;
624 compatible = "android,trusty-v1";
625
626 virtio {
627 compatible = "android,trusty-virtio-v1";
628 };
629
630 test {
631 compatible = "android,trusty-test-v1";
632 };
633
634 log {
635 compatible = "android,trusty-log-v1";
636 };
637
638 irq {
639 ipi-range = <0x08 0x0f 0x08>;
640 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
641 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
642 compatible = "android,trusty-irq-v1";
643 };
644 };
Boyan Karatotev4fc4e9c2023-11-28 16:08:52 +0000645
646 /* used in U-boot, Linux doesn't care */
647 arm_ffa {
648 compatible = "arm,ffa";
649 method = "smc";
650 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100651};