blob: 942cf75ef95c6a795dabd092bb8f5c2a3407c00f [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
Usama Ariff5c58af2020-04-17 16:13:39 +010049 cpus {
50 #address-cells = <1>;
51 #size-cells = <0>;
52
53 cpu-map {
54 cluster0 {
55 core0 {
56 cpu = <&CPU0>;
57 };
58 core1 {
59 cpu = <&CPU1>;
60 };
61 core2 {
62 cpu = <&CPU2>;
63 };
64 core3 {
65 cpu = <&CPU3>;
66 };
Avinash Mehtae5da15e2020-10-28 16:43:28 +000067 core4 {
68 cpu = <&CPU4>;
69 };
70 core5 {
71 cpu = <&CPU5>;
72 };
73 core6 {
74 cpu = <&CPU6>;
75 };
76 core7 {
77 cpu = <&CPU7>;
78 };
Usama Ariff5c58af2020-04-17 16:13:39 +010079 };
80 };
81
Usama Arif8ea4f802020-08-12 17:14:37 +010082 /*
83 * The timings below are just to demonstrate working cpuidle.
84 * These values may be inaccurate.
85 */
86 idle-states {
Boyan Karatotev04274142023-11-14 13:57:56 +000087 entry-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +010088
89 CPU_SLEEP_0: cpu-sleep-0 {
90 compatible = "arm,idle-state";
91 arm,psci-suspend-param = <0x0010000>;
92 local-timer-stop;
93 entry-latency-us = <300>;
94 exit-latency-us = <1200>;
95 min-residency-us = <2000>;
96 };
97 CLUSTER_SLEEP_0: cluster-sleep-0 {
98 compatible = "arm,idle-state";
99 arm,psci-suspend-param = <0x1010000>;
100 local-timer-stop;
101 entry-latency-us = <400>;
102 exit-latency-us = <1200>;
103 min-residency-us = <2500>;
104 };
105 };
106
Chris Kayc19a82b2021-05-18 18:49:51 +0100107 amus {
108 amu: amu-0 {
109 #address-cells = <1>;
110 #size-cells = <0>;
111
112 mpmm_gear0: counter@0 {
113 reg = <0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100114 enable-at-el3;
115 };
116
117 mpmm_gear1: counter@1 {
118 reg = <1>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100119 enable-at-el3;
120 };
121
122 mpmm_gear2: counter@2 {
123 reg = <2>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100124 enable-at-el3;
125 };
126 };
127 };
128
Usama Ariff5c58af2020-04-17 16:13:39 +0100129 CPU0:cpu@0 {
130 device_type = "cpu";
131 compatible = "arm,armv8";
132 reg = <0x0>;
133 enable-method = "psci";
134 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100135 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000136 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100137 amu = <&amu>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100138 };
139
140 CPU1:cpu@100 {
141 device_type = "cpu";
142 compatible = "arm,armv8";
143 reg = <0x100>;
144 enable-method = "psci";
145 clocks = <&scmi_dvfs 0>;
Usama Arif8ea4f802020-08-12 17:14:37 +0100146 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000147 capacity-dmips-mhz = <LIT_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100148 amu = <&amu>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100149 };
150
151 CPU2:cpu@200 {
152 device_type = "cpu";
153 compatible = "arm,armv8";
154 reg = <0x200>;
155 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100156 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100157 amu = <&amu>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100158 };
159
160 CPU3:cpu@300 {
161 device_type = "cpu";
162 compatible = "arm,armv8";
163 reg = <0x300>;
164 enable-method = "psci";
Usama Arif8ea4f802020-08-12 17:14:37 +0100165 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100166 amu = <&amu>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100167 };
168
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000169 CPU4:cpu@400 {
170 device_type = "cpu";
171 compatible = "arm,armv8";
172 reg = <0x400>;
173 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000174 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000175 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000176 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100177 amu = <&amu>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000178 };
179
180 CPU5:cpu@500 {
181 device_type = "cpu";
182 compatible = "arm,armv8";
183 reg = <0x500>;
184 enable-method = "psci";
Usama Arifa97c3902021-02-03 15:40:46 +0000185 clocks = <&scmi_dvfs 1>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000186 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatoteva02bb362023-12-12 15:59:01 +0000187 capacity-dmips-mhz = <MID_CAPACITY>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100188 amu = <&amu>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000189 };
190
191 CPU6:cpu@600 {
192 device_type = "cpu";
193 compatible = "arm,armv8";
194 reg = <0x600>;
195 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000196 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100197 amu = <&amu>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000198 };
199
200 CPU7:cpu@700 {
201 device_type = "cpu";
202 compatible = "arm,armv8";
203 reg = <0x700>;
204 enable-method = "psci";
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000205 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Chris Kayc19a82b2021-05-18 18:49:51 +0100206 amu = <&amu>;
Avinash Mehtae5da15e2020-10-28 16:43:28 +0000207 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100208 };
209
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000210 reserved-memory {
211 #address-cells = <2>;
212 #size-cells = <2>;
213 ranges;
214
Anders Dellienad60a422021-12-08 21:57:21 +0000215 linux,cma {
216 compatible = "shared-dma-pool";
217 reusable;
218 size = <0x0 0x8000000>;
219 linux,cma-default;
220 };
221
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000222 optee {
Davidson K2fff46c2022-12-14 17:38:14 +0530223 compatible = "restricted-dma-pool";
Boyan Karatotev6dacc272023-12-04 16:12:08 +0000224 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000225 };
Tudor Cretud0628722021-09-24 12:09:53 +0000226
Arunachalam Ganapathyb153ce02020-12-14 12:31:32 +0000227 };
228
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000229 memory {
230 device_type = "memory";
231 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
232 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
233 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
234 };
235
Usama Ariff5c58af2020-04-17 16:13:39 +0100236 psci {
Usama Arif814646b2021-05-27 20:09:17 +0100237 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Ariff5c58af2020-04-17 16:13:39 +0100238 method = "smc";
239 };
240
Jagdish Gediya7aca6602024-04-24 15:20:21 +0100241 cpu-pmu-little {
242 compatible = LIT_CPU_PMU_COMPATIBLE;
243 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_little>;
244 status = "okay";
245 };
246
247 cpu-pmu-mid {
248 compatible = MID_CPU_PMU_COMPATIBLE;
249 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
250 status = "okay";
251 };
252
253 cpu-pmu-big {
254 compatible = BIG_CPU_PMU_COMPATIBLE;
255 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
256 status = "okay";
Boyan Karatotev553b06b2023-11-15 11:29:59 +0000257 };
258
Usama Ariff5c58af2020-04-17 16:13:39 +0100259 sram: sram@6000000 {
260 compatible = "mmio-sram";
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000261 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100262
263 #address-cells = <1>;
264 #size-cells = <1>;
Boyan Karatotev5ee4deb2023-12-04 16:09:14 +0000265 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100266
Boyan Karatotevf2596ff2024-04-19 12:27:46 +0100267 cpu_scp_scmi_a2p: scp-shmem@0 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100268 compatible = "arm,scmi-shmem";
269 reg = <0x0 0x80>;
270 };
271 };
272
Leo Yanab0450f2024-04-15 09:05:34 +0100273 mbox_db_rx: mhu@MHU_RX_ADDR {
Boyan Karatotev6c069e72024-04-24 10:09:18 +0100274 compatible = MHU_RX_COMPAT;
275 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 MHU_OFFSET>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000276 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100277 clock-names = "apb_pclk";
Boyan Karatotev6c069e72024-04-24 10:09:18 +0100278 #mbox-cells = <MHU_MBOX_CELLS>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100279 interrupts = <GIC_SPI MHU_RX_INT_NUM IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotev6c069e72024-04-24 10:09:18 +0100280 interrupt-names = MHU_RX_INT_NAME;
Usama Ariff5c58af2020-04-17 16:13:39 +0100281 };
282
Leo Yanab0450f2024-04-15 09:05:34 +0100283 mbox_db_tx: mhu@MHU_TX_ADDR {
Boyan Karatotev6c069e72024-04-24 10:09:18 +0100284 compatible = MHU_TX_COMPAT;
285 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 MHU_OFFSET>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000286 clocks = <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100287 clock-names = "apb_pclk";
Boyan Karatotev6c069e72024-04-24 10:09:18 +0100288 #mbox-cells = <MHU_MBOX_CELLS>;
289 interrupt-names = MHU_TX_INT_NAME;
Usama Ariff5c58af2020-04-17 16:13:39 +0100290 };
291
Boyan Karatotevd42987c2024-04-19 13:59:11 +0100292 firmware {
293 scmi {
294 compatible = "arm,scmi";
295 mbox-names = "tx", "rx";
Boyan Karatotevd42987c2024-04-19 13:59:11 +0100296 #address-cells = <1>;
297 #size-cells = <0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100298
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000299#if TC_SCMI_PD_CTRL_EN
Boyan Karatotevd42987c2024-04-19 13:59:11 +0100300 scmi_devpd: protocol@11 {
301 reg = <0x11>;
302 #power-domain-cells = <1>;
303 };
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000304#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan127eabe2023-07-26 20:45:27 +0100305
Boyan Karatotevd42987c2024-04-19 13:59:11 +0100306 scmi_dvfs: protocol@13 {
307 reg = <0x13>;
308 #clock-cells = <1>;
309 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100310
Boyan Karatotevd42987c2024-04-19 13:59:11 +0100311 scmi_clk: protocol@14 {
312 reg = <0x14>;
313 #clock-cells = <1>;
314 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100315 };
316 };
317
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000318 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev04274142023-11-14 13:57:56 +0000319 compatible = "arm,gic-v3";
Usama Ariff5c58af2020-04-17 16:13:39 +0100320 #address-cells = <2>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100321 #interrupt-cells = <4>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100322 #size-cells = <2>;
323 ranges;
324 interrupt-controller;
325 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000326 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100327 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW 0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100328 };
329
330 timer {
331 compatible = "arm,armv8-timer";
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100332 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
333 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
334 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
335 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100336 };
337
Jagdish Gediya77080f62024-04-23 13:46:41 +0100338 spe-pmu-mid {
339 compatible = "arm,statistical-profiling-extension-v1";
340 interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
341 status = "disabled";
342 };
343
344 spe-pmu-big {
345 compatible = "arm,statistical-profiling-extension-v1";
346 interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
347 status = "disabled";
348 };
349
Boyan Karatotev04274142023-11-14 13:57:56 +0000350 soc_refclk: refclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100351 compatible = "fixed-clock";
352 #clock-cells = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000353 clock-frequency = <1000000000>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100354 clock-output-names = "apb_pclk";
355 };
356
357 soc_refclk60mhz: refclk60mhz {
358 compatible = "fixed-clock";
359 #clock-cells = <0>;
360 clock-frequency = <60000000>;
361 clock-output-names = "iofpga_clk";
362 };
363
Boyan Karatotev04274142023-11-14 13:57:56 +0000364 soc_uartclk: uartclk {
Usama Ariff5c58af2020-04-17 16:13:39 +0100365 compatible = "fixed-clock";
366 #clock-cells = <0>;
Jagdish Gediya25264e22024-06-28 11:00:18 +0000367 clock-frequency = <TC_UARTCLK>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100368 clock-output-names = "uartclk";
369 };
370
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000371 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev04274142023-11-14 13:57:56 +0000372 os_uart: serial@2a400000 {
Usama Ariff5c58af2020-04-17 16:13:39 +0100373 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000374 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100375 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotev04274142023-11-14 13:57:56 +0000376 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100377 clock-names = "uartclk", "apb_pclk";
378 status = "okay";
379 };
380
Leo Yan79c6ede2024-04-24 10:03:50 +0100381#if !TC_DPU_USE_SCMI_CLK
382 dpu_aclk: dpu_aclk {
383 compatible = "fixed-clock";
384 #clock-cells = <0>;
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000385 clock-frequency = <LCD_TIMING_CLK>;
Leo Yan79c6ede2024-04-24 10:03:50 +0100386 clock-output-names = "fpga:dpu_aclk";
387 };
388
389 dpu_pixel_clk: dpu-pixel-clk {
390 compatible = "fixed-clock";
391 #clock-cells = <0>;
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000392 clock-frequency = <LCD_TIMING_CLK>;
Leo Yan79c6ede2024-04-24 10:03:50 +0100393 clock-output-names = "pxclk";
394 };
395#endif /* !TC_DPU_USE_SCMI_CLK */
396
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000397#if TC_DPU_USE_SIMPLE_PANEL
398 vpanel {
399 compatible = "panel-dpi";
400 post-init-providers = <&pl0>;
401 port {
402 lcd_in: endpoint {
403 remote-endpoint = <&dp_pl0_out0>;
404 };
405 };
406
407 panel-timing {
408 LCD_TIMING;
409 };
410 };
411
412#else
Usama Ariff5c58af2020-04-17 16:13:39 +0100413 vencoder {
414 compatible = "drm,virtual-encoder";
Usama Ariff5c58af2020-04-17 16:13:39 +0100415 port {
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000416 lcd_in: endpoint {
Avinash Mehta0dc52292020-07-22 16:40:07 +0100417 remote-endpoint = <&dp_pl0_out0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100418 };
419 };
420
421 display-timings {
Boyan Karatotev04274142023-11-14 13:57:56 +0000422 timing-panel {
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000423 LCD_TIMING;
Usama Ariff5c58af2020-04-17 16:13:39 +0100424 };
425 };
426
427 };
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000428#endif
Jackson Cooper-Drivere9e83e92024-04-24 10:27:58 +0100429 ethernet: ethernet@ETHERNET_ADDR {
430 reg = <0x0 ADDRESSIFY(ETHERNET_ADDR) 0x0 0x10000>;
431 interrupts = <GIC_SPI ETHERNET_INT IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000432
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000433 reg-io-width = <2>;
434 smsc,irq-push-pull;
Usama Ariff5c58af2020-04-17 16:13:39 +0100435 };
436
Usama Ariff5c58af2020-04-17 16:13:39 +0100437 bp_clock24mhz: clock24mhz {
438 compatible = "fixed-clock";
439 #clock-cells = <0>;
440 clock-frequency = <24000000>;
441 clock-output-names = "bp:clock24mhz";
442 };
443
Jackson Cooper-Drivere9e83e92024-04-24 10:27:58 +0100444 sysreg: sysreg@SYS_REGS_ADDR {
Usama Arifa41973a2020-06-10 16:27:53 +0100445 compatible = "arm,vexpress-sysreg";
Jackson Cooper-Drivere9e83e92024-04-24 10:27:58 +0100446 reg = <0x0 ADDRESSIFY(SYS_REGS_ADDR) 0x0 0x1000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100447 gpio-controller;
448 #gpio-cells = <2>;
449 };
450
451 fixed_3v3: v2m-3v3 {
452 compatible = "regulator-fixed";
453 regulator-name = "3V3";
454 regulator-min-microvolt = <3300000>;
455 regulator-max-microvolt = <3300000>;
456 regulator-always-on;
457 };
458
Jackson Cooper-Drivere9e83e92024-04-24 10:27:58 +0100459 mmci: mmci@MMC_ADDR {
Usama Arifa41973a2020-06-10 16:27:53 +0100460 compatible = "arm,pl180", "arm,primecell";
Jackson Cooper-Drivere9e83e92024-04-24 10:27:58 +0100461 reg = <0x0 ADDRESSIFY(MMC_ADDR) 0x0 0x1000>;
462 interrupts = <GIC_SPI MMC_INT_0 IRQ_TYPE_LEVEL_HIGH 0>,
463 <GIC_SPI MMC_INT_1 IRQ_TYPE_LEVEL_HIGH 0>;
Usama Arifa41973a2020-06-10 16:27:53 +0100464 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000465 bus-width = <4>;
466 max-frequency = <25000000>;
Usama Arifa41973a2020-06-10 16:27:53 +0100467 vmmc-supply = <&fixed_3v3>;
468 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
469 clock-names = "mclk", "apb_pclk";
470 };
471
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000472 gpu_clk: gpu_clk {
473 compatible = "fixed-clock";
474 #clock-cells = <0>;
475 clock-frequency = <1000000000>;
476 };
477
478 gpu_core_clk: gpu_core_clk {
479 compatible = "fixed-clock";
480 #clock-cells = <0>;
481 clock-frequency = <1000000000>;
482 };
483
Anders Dellien82117bb2022-01-01 21:51:21 +0000484 gpu: gpu@2d000000 {
485 compatible = "arm,mali-midgard";
486 reg = <0x0 0x2d000000 0x0 0x200000>;
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
Angel Rodriguez Garciabebefe02023-12-21 10:11:13 +0000494 pbha {
495 int-id-override = <0 0x22>, <2 0x23>, <4 0x23>, <7 0x22>,
496 <8 0x22>, <9 0x22>, <10 0x22>, <11 0x22>,
497 <12 0x22>, <13 0x22>, <16 0x22>, <17 0x32>,
498 <18 0x32>, <19 0x22>, <20 0x22>, <21 0x32>,
499 <22 0x32>, <24 0x22>, <28 0x32>;
500 propagate-bits = <0x0f>;
501 };
Anders Dellien82117bb2022-01-01 21:51:21 +0000502 };
503
Boyan Karatotev04274142023-11-14 13:57:56 +0000504 power_model_simple {
Rupinderjit Singhcb3e9652023-02-03 09:29:57 +0000505 /*
506 * Numbers used are irrelevant to Titan,
507 * it helps suppressing the kernel warnings.
508 */
509 compatible = "arm,mali-simple-power-model";
510 static-coefficient = <2427750>;
511 dynamic-coefficient = <4687>;
512 ts = <20000 2000 (-20) 2>;
513 thermal-zone = "";
514 };
515
Ben Horgan4c6960c2024-06-04 13:22:53 +0100516 smmu_600: smmu@2ce00000 {
517 compatible = "arm,smmu-v3";
518 reg = <0 0x2ce00000 0 0x20000>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100519 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING 0>,
520 <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>,
521 <GIC_SPI 76 IRQ_TYPE_EDGE_RISING 0>,
522 <GIC_SPI 77 IRQ_TYPE_EDGE_RISING 0>;
Ben Horgan4c6960c2024-06-04 13:22:53 +0100523 interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
524 #iommu-cells = <1>;
525 status = "disabled";
526 };
527
Boyan Karatotev04274142023-11-14 13:57:56 +0000528 smmu_700: iommu@3f000000 {
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000529 #iommu-cells = <1>;
530 compatible = "arm,smmu-v3";
Davidson Ked80eab2022-11-21 17:49:51 +0530531 reg = <0x0 0x3f000000 0x0 0x5000000>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100532 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING 0>,
533 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING 0>,
534 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING 0>;
Kshitij Sisodia2c406dd2023-08-16 09:46:05 +0100535 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Ked80eab2022-11-21 17:49:51 +0530536 dma-coherent;
Leo Yan2458b382024-06-04 12:51:12 +0100537 status = "disabled";
Anders Dellien4a6ebee2022-01-01 21:56:25 +0000538 };
539
Jackson Cooper-Driver0458d3a2024-06-04 13:15:00 +0100540 smmu_700_dpu: iommu@4002a00000 {
541 #iommu-cells = <1>;
542 compatible = "arm,smmu-v3";
543 reg = <HI(0x4002a00000) LO(0x4002a00000) 0x0 0x5000000>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100544 interrupts = <GIC_SPI 481 IRQ_TYPE_EDGE_RISING 0>,
545 <GIC_SPI 482 IRQ_TYPE_EDGE_RISING 0>,
546 <GIC_SPI 483 IRQ_TYPE_EDGE_RISING 0>;
Jackson Cooper-Driver0458d3a2024-06-04 13:15:00 +0100547 interrupt-names = "eventq", "cmdq-sync", "gerror";
548 dma-coherent;
549 status = "disabled";
550 };
551
Leo Yanab0450f2024-04-15 09:05:34 +0100552 dp0: display@DPU_ADDR {
Usama Ariff5c58af2020-04-17 16:13:39 +0100553 #address-cells = <1>;
554 #size-cells = <0>;
555 compatible = "arm,mali-d71";
Leo Yanab0450f2024-04-15 09:05:34 +0100556 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100557 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH 0>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100558 interrupt-names = "DPU";
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000559 DPU_CLK_ATTR1;
Kshitij Sisodiaa658b462023-11-22 17:03:45 +0000560
Usama Ariff5c58af2020-04-17 16:13:39 +0100561 pl0: pipeline@0 {
562 reg = <0>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000563 DPU_CLK_ATTR2;
Usama Ariff5c58af2020-04-17 16:13:39 +0100564 pl_id = <0>;
565 ports {
566 #address-cells = <1>;
567 #size-cells = <0>;
568 port@0 {
569 reg = <0>;
570 dp_pl0_out0: endpoint {
Jagdish Gediya1d2d96d2024-04-19 13:16:36 +0000571 remote-endpoint = <&lcd_in>;
Usama Ariff5c58af2020-04-17 16:13:39 +0100572 };
573 };
574 };
575 };
576
577 pl1: pipeline@1 {
578 reg = <1>;
Boyan Karatotev1b8ed092023-11-15 11:54:33 +0000579 DPU_CLK_ATTR3;
Usama Ariff5c58af2020-04-17 16:13:39 +0100580 pl_id = <1>;
581 ports {
582 #address-cells = <1>;
583 #size-cells = <0>;
584 port@0 {
585 reg = <0>;
586 };
587 };
588 };
589 };
Arunachalam Ganapathy39460d02020-11-17 15:05:01 +0000590
Davidson Kb45ec8c2023-01-13 14:02:13 +0530591 /*
592 * L3 cache in the DSU is the Memory System Component (MSC)
593 * The MPAM registers are accessed through utility bus in the DSU
594 */
Jackson Cooper-Driver967999d2024-08-28 11:46:35 +0100595 dsu-msc0 {
Davidson Kb45ec8c2023-01-13 14:02:13 +0530596 compatible = "arm,mpam-msc";
Jackson Cooper-Driver967999d2024-08-28 11:46:35 +0100597 reg = <DSU_MPAM_ADDR 0x0 0x2000>;
Davidson Kb45ec8c2023-01-13 14:02:13 +0530598 };
599
Davidson K59da2072021-10-13 18:49:41 +0530600 ete0 {
601 compatible = "arm,embedded-trace-extension";
602 cpu = <&CPU0>;
603 };
604
605 ete1 {
606 compatible = "arm,embedded-trace-extension";
607 cpu = <&CPU1>;
608 };
609
610 ete2 {
611 compatible = "arm,embedded-trace-extension";
612 cpu = <&CPU2>;
613 };
614
615 ete3 {
616 compatible = "arm,embedded-trace-extension";
617 cpu = <&CPU3>;
618 };
619
620 ete4 {
621 compatible = "arm,embedded-trace-extension";
622 cpu = <&CPU4>;
623 };
624
625 ete5 {
626 compatible = "arm,embedded-trace-extension";
627 cpu = <&CPU5>;
628 };
629
630 ete6 {
631 compatible = "arm,embedded-trace-extension";
632 cpu = <&CPU6>;
633 };
634
635 ete7 {
636 compatible = "arm,embedded-trace-extension";
637 cpu = <&CPU7>;
638 };
639
Boyan Karatotev04274142023-11-14 13:57:56 +0000640 trbe {
Davidson K59da2072021-10-13 18:49:41 +0530641 compatible = "arm,trace-buffer-extension";
Jagdish Gediya1300bbc2024-04-23 12:06:47 +0100642 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW 0>;
Davidson K59da2072021-10-13 18:49:41 +0530643 };
Arunachalam Ganapathyba197f52022-04-11 14:43:15 +0100644
645 trusty {
646 #size-cells = <0x02>;
647 #address-cells = <0x02>;
648 ranges = <0x00>;
649 compatible = "android,trusty-v1";
650
651 virtio {
652 compatible = "android,trusty-virtio-v1";
653 };
654
655 test {
656 compatible = "android,trusty-test-v1";
657 };
658
659 log {
660 compatible = "android,trusty-log-v1";
661 };
662
663 irq {
664 ipi-range = <0x08 0x0f 0x08>;
665 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
666 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
667 compatible = "android,trusty-irq-v1";
668 };
669 };
Boyan Karatotev4fc4e9c2023-11-28 16:08:52 +0000670
671 /* used in U-boot, Linux doesn't care */
672 arm_ffa {
673 compatible = "arm,ffa";
674 method = "smc";
675 };
Usama Ariff5c58af2020-04-17 16:13:39 +0100676};