blob: ac08e0b18e2efc90eb24968c528dd5d3fcf679bb [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
Leo Yan9add6712024-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 Sisodiab32a8f42023-08-16 09:46:05 +010038
Usama Arifbec5afd2020-04-17 16:13:39 +010039/ {
Usama Ariff1513622021-04-09 17:07:41 +010040 compatible = "arm,tc";
Usama Arifbec5afd2020-04-17 16:13:39 +010041 interrupt-parent = <&gic>;
42 #address-cells = <2>;
43 #size-cells = <2>;
44
45 aliases {
Boyan Karatotev13b8e742023-11-14 13:57:56 +000046 serial0 = &os_uart;
Usama Arifbec5afd2020-04-17 16:13:39 +010047 };
48
Usama Arifbec5afd2020-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 Mehtaf68a0842020-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 Arifbec5afd2020-04-17 16:13:39 +010079 };
80 };
81
Usama Arif57900782020-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 Karatotev13b8e742023-11-14 13:57:56 +000087 entry-method = "psci";
Usama Arif57900782020-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
Usama Arifbec5afd2020-04-17 16:13:39 +0100107 CPU0:cpu@0 {
108 device_type = "cpu";
109 compatible = "arm,armv8";
110 reg = <0x0>;
111 enable-method = "psci";
112 clocks = <&scmi_dvfs 0>;
Usama Arif57900782020-08-12 17:14:37 +0100113 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000114 capacity-dmips-mhz = <LIT_CAPACITY>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100115 };
116
117 CPU1:cpu@100 {
118 device_type = "cpu";
119 compatible = "arm,armv8";
120 reg = <0x100>;
121 enable-method = "psci";
122 clocks = <&scmi_dvfs 0>;
Usama Arif57900782020-08-12 17:14:37 +0100123 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000124 capacity-dmips-mhz = <LIT_CAPACITY>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100125 };
126
127 CPU2:cpu@200 {
128 device_type = "cpu";
129 compatible = "arm,armv8";
130 reg = <0x200>;
131 enable-method = "psci";
Usama Arif57900782020-08-12 17:14:37 +0100132 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100133 };
134
135 CPU3:cpu@300 {
136 device_type = "cpu";
137 compatible = "arm,armv8";
138 reg = <0x300>;
139 enable-method = "psci";
Usama Arif57900782020-08-12 17:14:37 +0100140 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100141 };
142
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000143 CPU4:cpu@400 {
144 device_type = "cpu";
145 compatible = "arm,armv8";
146 reg = <0x400>;
147 enable-method = "psci";
Usama Arif75edb752021-02-03 15:40:46 +0000148 clocks = <&scmi_dvfs 1>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000149 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000150 capacity-dmips-mhz = <MID_CAPACITY>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000151 };
152
153 CPU5:cpu@500 {
154 device_type = "cpu";
155 compatible = "arm,armv8";
156 reg = <0x500>;
157 enable-method = "psci";
Usama Arif75edb752021-02-03 15:40:46 +0000158 clocks = <&scmi_dvfs 1>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000159 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000160 capacity-dmips-mhz = <MID_CAPACITY>;
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000161 };
162
163 CPU6:cpu@600 {
164 device_type = "cpu";
165 compatible = "arm,armv8";
166 reg = <0x600>;
167 enable-method = "psci";
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000168 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
169 };
170
171 CPU7:cpu@700 {
172 device_type = "cpu";
173 compatible = "arm,armv8";
174 reg = <0x700>;
175 enable-method = "psci";
Avinash Mehtaf68a0842020-10-28 16:43:28 +0000176 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000177 };
Usama Arifbec5afd2020-04-17 16:13:39 +0100178 };
179
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000180 reserved-memory {
181 #address-cells = <2>;
182 #size-cells = <2>;
183 ranges;
184
Anders Delliena6c9b722021-12-08 21:57:21 +0000185 linux,cma {
186 compatible = "shared-dma-pool";
187 reusable;
188 size = <0x0 0x8000000>;
189 linux,cma-default;
190 };
191
Boyan Karatotev88309be2023-12-04 16:12:08 +0000192 optee {
Davidson K4662a882022-12-14 17:38:14 +0530193 compatible = "restricted-dma-pool";
Boyan Karatotev88309be2023-12-04 16:12:08 +0000194 reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000195 };
Tudor Cretu77b301a2021-09-24 12:09:53 +0000196
Arunachalam Ganapathy948bb442020-12-14 12:31:32 +0000197 };
198
Boyan Karatoteva439dfd2023-12-04 16:09:14 +0000199 memory {
200 device_type = "memory";
201 reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
202 <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
203 HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
204 };
205
Usama Arifbec5afd2020-04-17 16:13:39 +0100206 psci {
Usama Arif7a64bfa2021-05-27 20:09:17 +0100207 compatible = "arm,psci-1.0", "arm,psci-0.2";
Usama Arifbec5afd2020-04-17 16:13:39 +0100208 method = "smc";
209 };
210
Jagdish Gediya9247a602024-04-24 15:20:21 +0100211 cpu-pmu-little {
212 compatible = LIT_CPU_PMU_COMPATIBLE;
213 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_little>;
214 status = "okay";
215 };
216
217 cpu-pmu-mid {
218 compatible = MID_CPU_PMU_COMPATIBLE;
219 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
220 status = "okay";
221 };
222
223 cpu-pmu-big {
224 compatible = BIG_CPU_PMU_COMPATIBLE;
225 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
226 status = "okay";
Boyan Karatotev4fef47c2023-11-15 11:29:59 +0000227 };
228
Usama Arifbec5afd2020-04-17 16:13:39 +0100229 sram: sram@6000000 {
230 compatible = "mmio-sram";
Boyan Karatoteva439dfd2023-12-04 16:09:14 +0000231 reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100232
233 #address-cells = <1>;
234 #size-cells = <1>;
Boyan Karatoteva439dfd2023-12-04 16:09:14 +0000235 ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100236
Boyan Karatotev102554c2024-04-19 12:27:46 +0100237 cpu_scp_scmi_a2p: scp-shmem@0 {
Usama Arifbec5afd2020-04-17 16:13:39 +0100238 compatible = "arm,scmi-shmem";
239 reg = <0x0 0x80>;
240 };
241 };
242
Leo Yanbd7dc052024-04-15 09:05:34 +0100243 mbox_db_rx: mhu@MHU_RX_ADDR {
Boyan Karatotevcd2b4cc2024-04-24 10:09:18 +0100244 compatible = MHU_RX_COMPAT;
245 reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 MHU_OFFSET>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000246 clocks = <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100247 clock-names = "apb_pclk";
Boyan Karatotevcd2b4cc2024-04-24 10:09:18 +0100248 #mbox-cells = <MHU_MBOX_CELLS>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100249 interrupts = <GIC_SPI MHU_RX_INT_NUM IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotevcd2b4cc2024-04-24 10:09:18 +0100250 interrupt-names = MHU_RX_INT_NAME;
Usama Arifbec5afd2020-04-17 16:13:39 +0100251 };
252
Leo Yanbd7dc052024-04-15 09:05:34 +0100253 mbox_db_tx: mhu@MHU_TX_ADDR {
Boyan Karatotevcd2b4cc2024-04-24 10:09:18 +0100254 compatible = MHU_TX_COMPAT;
255 reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 MHU_OFFSET>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000256 clocks = <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100257 clock-names = "apb_pclk";
Boyan Karatotevcd2b4cc2024-04-24 10:09:18 +0100258 #mbox-cells = <MHU_MBOX_CELLS>;
259 interrupt-names = MHU_TX_INT_NAME;
Usama Arifbec5afd2020-04-17 16:13:39 +0100260 };
261
Boyan Karatotevfdeb95f2024-04-19 13:59:11 +0100262 firmware {
263 scmi {
264 compatible = "arm,scmi";
265 mbox-names = "tx", "rx";
Boyan Karatotevfdeb95f2024-04-19 13:59:11 +0100266 #address-cells = <1>;
267 #size-cells = <0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100268
Kshitij Sisodia090a6aa2023-11-22 17:03:45 +0000269#if TC_SCMI_PD_CTRL_EN
Boyan Karatotevfdeb95f2024-04-19 13:59:11 +0100270 scmi_devpd: protocol@11 {
271 reg = <0x11>;
272 #power-domain-cells = <1>;
273 };
Kshitij Sisodia090a6aa2023-11-22 17:03:45 +0000274#endif /* TC_SCMI_PD_CTRL_EN */
Ben Horgan80781a52023-07-26 20:45:27 +0100275
Boyan Karatotevfdeb95f2024-04-19 13:59:11 +0100276 scmi_dvfs: protocol@13 {
277 reg = <0x13>;
278 #clock-cells = <1>;
279 };
Usama Arifbec5afd2020-04-17 16:13:39 +0100280
Boyan Karatotevfdeb95f2024-04-19 13:59:11 +0100281 scmi_clk: protocol@14 {
282 reg = <0x14>;
283 #clock-cells = <1>;
284 };
Usama Arifbec5afd2020-04-17 16:13:39 +0100285 };
286 };
287
Boyan Karatotev95562762023-11-15 11:54:33 +0000288 gic: interrupt-controller@GIC_CTRL_ADDR {
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000289 compatible = "arm,gic-v3";
Usama Arifbec5afd2020-04-17 16:13:39 +0100290 #address-cells = <2>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100291 #interrupt-cells = <4>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100292 #size-cells = <2>;
293 ranges;
294 interrupt-controller;
295 reg = <0x0 0x30000000 0 0x10000>, /* GICD */
Boyan Karatotev95562762023-11-15 11:54:33 +0000296 <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100297 interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW 0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100298 };
299
300 timer {
301 compatible = "arm,armv8-timer";
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100302 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
303 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
304 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
305 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100306 };
307
Jagdish Gediyac71080f2024-04-23 13:46:41 +0100308 spe-pmu-mid {
309 compatible = "arm,statistical-profiling-extension-v1";
310 interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
311 status = "disabled";
312 };
313
314 spe-pmu-big {
315 compatible = "arm,statistical-profiling-extension-v1";
316 interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
317 status = "disabled";
318 };
319
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000320 soc_refclk: refclk {
Usama Arifbec5afd2020-04-17 16:13:39 +0100321 compatible = "fixed-clock";
322 #clock-cells = <0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000323 clock-frequency = <1000000000>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100324 clock-output-names = "apb_pclk";
325 };
326
327 soc_refclk60mhz: refclk60mhz {
328 compatible = "fixed-clock";
329 #clock-cells = <0>;
330 clock-frequency = <60000000>;
331 clock-output-names = "iofpga_clk";
332 };
333
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000334 soc_uartclk: uartclk {
Usama Arifbec5afd2020-04-17 16:13:39 +0100335 compatible = "fixed-clock";
336 #clock-cells = <0>;
Jagdish Gediya60e09fb2024-06-28 11:00:18 +0000337 clock-frequency = <TC_UARTCLK>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100338 clock-output-names = "uartclk";
339 };
340
Boyan Karatotev95562762023-11-15 11:54:33 +0000341 /* soc_uart0 on FPGA, ap_ns_uart on FVP */
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000342 os_uart: serial@2a400000 {
Usama Arifbec5afd2020-04-17 16:13:39 +0100343 compatible = "arm,pl011", "arm,primecell";
Boyan Karatotev95562762023-11-15 11:54:33 +0000344 reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100345 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000346 clocks = <&soc_uartclk>, <&soc_refclk>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100347 clock-names = "uartclk", "apb_pclk";
348 status = "okay";
349 };
Leo Yan9add6712024-04-24 10:03:50 +0100350
351#if !TC_DPU_USE_SCMI_CLK
352 dpu_aclk: dpu_aclk {
353 compatible = "fixed-clock";
354 #clock-cells = <0>;
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000355 clock-frequency = <LCD_TIMING_CLK>;
Leo Yan9add6712024-04-24 10:03:50 +0100356 clock-output-names = "fpga:dpu_aclk";
357 };
358
359 dpu_pixel_clk: dpu-pixel-clk {
360 compatible = "fixed-clock";
361 #clock-cells = <0>;
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000362 clock-frequency = <LCD_TIMING_CLK>;
Leo Yan9add6712024-04-24 10:03:50 +0100363 clock-output-names = "pxclk";
364 };
365#endif /* !TC_DPU_USE_SCMI_CLK */
Usama Arifbec5afd2020-04-17 16:13:39 +0100366
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000367#if TC_DPU_USE_SIMPLE_PANEL
368 vpanel {
369 compatible = "panel-dpi";
370 post-init-providers = <&pl0>;
371 port {
372 lcd_in: endpoint {
373 remote-endpoint = <&dp_pl0_out0>;
374 };
375 };
376
377 panel-timing {
378 LCD_TIMING;
379 };
380 };
381
382#else
Usama Arifbec5afd2020-04-17 16:13:39 +0100383 vencoder {
384 compatible = "drm,virtual-encoder";
Usama Arifbec5afd2020-04-17 16:13:39 +0100385 port {
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000386 lcd_in: endpoint {
Avinash Mehtadf71a602020-07-22 16:40:07 +0100387 remote-endpoint = <&dp_pl0_out0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100388 };
389 };
390
391 display-timings {
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000392 timing-panel {
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000393 LCD_TIMING;
Usama Arifbec5afd2020-04-17 16:13:39 +0100394 };
395 };
396
397 };
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000398#endif
Jackson Cooper-Driver61418972024-04-24 10:27:58 +0100399 ethernet: ethernet@ETHERNET_ADDR {
400 reg = <0x0 ADDRESSIFY(ETHERNET_ADDR) 0x0 0x10000>;
401 interrupts = <GIC_SPI ETHERNET_INT IRQ_TYPE_LEVEL_HIGH 0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000402
Boyan Karatotev95562762023-11-15 11:54:33 +0000403 reg-io-width = <2>;
404 smsc,irq-push-pull;
Usama Arifbec5afd2020-04-17 16:13:39 +0100405 };
406
Usama Arifbec5afd2020-04-17 16:13:39 +0100407 bp_clock24mhz: clock24mhz {
408 compatible = "fixed-clock";
409 #clock-cells = <0>;
410 clock-frequency = <24000000>;
411 clock-output-names = "bp:clock24mhz";
412 };
413
Jackson Cooper-Driver61418972024-04-24 10:27:58 +0100414 sysreg: sysreg@SYS_REGS_ADDR {
Usama Arif1cd56dc2020-06-10 16:27:53 +0100415 compatible = "arm,vexpress-sysreg";
Jackson Cooper-Driver61418972024-04-24 10:27:58 +0100416 reg = <0x0 ADDRESSIFY(SYS_REGS_ADDR) 0x0 0x1000>;
Usama Arif1cd56dc2020-06-10 16:27:53 +0100417 gpio-controller;
418 #gpio-cells = <2>;
419 };
420
421 fixed_3v3: v2m-3v3 {
422 compatible = "regulator-fixed";
423 regulator-name = "3V3";
424 regulator-min-microvolt = <3300000>;
425 regulator-max-microvolt = <3300000>;
426 regulator-always-on;
427 };
428
Jackson Cooper-Driver61418972024-04-24 10:27:58 +0100429 mmci: mmci@MMC_ADDR {
Usama Arif1cd56dc2020-06-10 16:27:53 +0100430 compatible = "arm,pl180", "arm,primecell";
Jackson Cooper-Driver61418972024-04-24 10:27:58 +0100431 reg = <0x0 ADDRESSIFY(MMC_ADDR) 0x0 0x1000>;
432 interrupts = <GIC_SPI MMC_INT_0 IRQ_TYPE_LEVEL_HIGH 0>,
433 <GIC_SPI MMC_INT_1 IRQ_TYPE_LEVEL_HIGH 0>;
Usama Arif1cd56dc2020-06-10 16:27:53 +0100434 wp-gpios = <&sysreg 1 0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000435 bus-width = <4>;
436 max-frequency = <25000000>;
Usama Arif1cd56dc2020-06-10 16:27:53 +0100437 vmmc-supply = <&fixed_3v3>;
438 clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
439 clock-names = "mclk", "apb_pclk";
440 };
441
Rupinderjit Singhb2a75b82023-02-03 09:29:57 +0000442 gpu_clk: gpu_clk {
443 compatible = "fixed-clock";
444 #clock-cells = <0>;
445 clock-frequency = <1000000000>;
446 };
447
448 gpu_core_clk: gpu_core_clk {
449 compatible = "fixed-clock";
450 #clock-cells = <0>;
451 clock-frequency = <1000000000>;
452 };
453
Anders Dellien7a849802022-01-01 21:51:21 +0000454 gpu: gpu@2d000000 {
455 compatible = "arm,mali-midgard";
456 reg = <0x0 0x2d000000 0x0 0x200000>;
Ben Horgan80781a52023-07-26 20:45:27 +0100457 clocks = <&gpu_core_clk>;
458 clock-names = "shadercores";
Kshitij Sisodia090a6aa2023-11-22 17:03:45 +0000459#if TC_SCMI_PD_CTRL_EN
Boyan Karatotev192ad5d2023-12-12 15:59:01 +0000460 power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
Ben Horgan80781a52023-07-26 20:45:27 +0100461 scmi-perf-domain = <3>;
Kshitij Sisodia090a6aa2023-11-22 17:03:45 +0000462#endif /* TC_SCMI_PD_CTRL_EN */
463
Angel Rodriguez Garcia62c12032023-12-21 10:11:13 +0000464 pbha {
465 int-id-override = <0 0x22>, <2 0x23>, <4 0x23>, <7 0x22>,
466 <8 0x22>, <9 0x22>, <10 0x22>, <11 0x22>,
467 <12 0x22>, <13 0x22>, <16 0x22>, <17 0x32>,
468 <18 0x32>, <19 0x22>, <20 0x22>, <21 0x32>,
469 <22 0x32>, <24 0x22>, <28 0x32>;
470 propagate-bits = <0x0f>;
471 };
Anders Dellien7a849802022-01-01 21:51:21 +0000472 };
473
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000474 power_model_simple {
Rupinderjit Singhb2a75b82023-02-03 09:29:57 +0000475 /*
476 * Numbers used are irrelevant to Titan,
477 * it helps suppressing the kernel warnings.
478 */
479 compatible = "arm,mali-simple-power-model";
480 static-coefficient = <2427750>;
481 dynamic-coefficient = <4687>;
482 ts = <20000 2000 (-20) 2>;
483 thermal-zone = "";
484 };
485
Ben Horgan303c3ce2024-06-04 13:22:53 +0100486 smmu_600: smmu@2ce00000 {
487 compatible = "arm,smmu-v3";
488 reg = <0 0x2ce00000 0 0x20000>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100489 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING 0>,
490 <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>,
491 <GIC_SPI 76 IRQ_TYPE_EDGE_RISING 0>,
492 <GIC_SPI 77 IRQ_TYPE_EDGE_RISING 0>;
Ben Horgan303c3ce2024-06-04 13:22:53 +0100493 interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
494 #iommu-cells = <1>;
495 status = "disabled";
496 };
497
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000498 smmu_700: iommu@3f000000 {
Anders Delliena1914132022-01-01 21:56:25 +0000499 #iommu-cells = <1>;
500 compatible = "arm,smmu-v3";
Davidson Kce633122022-11-21 17:49:51 +0530501 reg = <0x0 0x3f000000 0x0 0x5000000>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100502 interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING 0>,
503 <GIC_SPI 229 IRQ_TYPE_EDGE_RISING 0>,
504 <GIC_SPI 230 IRQ_TYPE_EDGE_RISING 0>;
Kshitij Sisodiab32a8f42023-08-16 09:46:05 +0100505 interrupt-names = "eventq", "cmdq-sync", "gerror";
Davidson Kce633122022-11-21 17:49:51 +0530506 dma-coherent;
Leo Yan983fd452024-06-04 12:51:12 +0100507 status = "disabled";
Anders Delliena1914132022-01-01 21:56:25 +0000508 };
509
Jackson Cooper-Driverce5b9032024-06-04 13:15:00 +0100510 smmu_700_dpu: iommu@4002a00000 {
511 #iommu-cells = <1>;
512 compatible = "arm,smmu-v3";
513 reg = <HI(0x4002a00000) LO(0x4002a00000) 0x0 0x5000000>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100514 interrupts = <GIC_SPI 481 IRQ_TYPE_EDGE_RISING 0>,
515 <GIC_SPI 482 IRQ_TYPE_EDGE_RISING 0>,
516 <GIC_SPI 483 IRQ_TYPE_EDGE_RISING 0>;
Jackson Cooper-Driverce5b9032024-06-04 13:15:00 +0100517 interrupt-names = "eventq", "cmdq-sync", "gerror";
518 dma-coherent;
519 status = "disabled";
520 };
521
Leo Yanbd7dc052024-04-15 09:05:34 +0100522 dp0: display@DPU_ADDR {
Usama Arifbec5afd2020-04-17 16:13:39 +0100523 #address-cells = <1>;
524 #size-cells = <0>;
525 compatible = "arm,mali-d71";
Leo Yanbd7dc052024-04-15 09:05:34 +0100526 reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100527 interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH 0>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100528 interrupt-names = "DPU";
Boyan Karatotev95562762023-11-15 11:54:33 +0000529 DPU_CLK_ATTR1;
Kshitij Sisodia090a6aa2023-11-22 17:03:45 +0000530
Usama Arifbec5afd2020-04-17 16:13:39 +0100531 pl0: pipeline@0 {
532 reg = <0>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000533 DPU_CLK_ATTR2;
Usama Arifbec5afd2020-04-17 16:13:39 +0100534 pl_id = <0>;
535 ports {
536 #address-cells = <1>;
537 #size-cells = <0>;
538 port@0 {
539 reg = <0>;
540 dp_pl0_out0: endpoint {
Jagdish Gediya9bf91b22024-04-19 13:16:36 +0000541 remote-endpoint = <&lcd_in>;
Usama Arifbec5afd2020-04-17 16:13:39 +0100542 };
543 };
544 };
545 };
546
547 pl1: pipeline@1 {
548 reg = <1>;
Boyan Karatotev95562762023-11-15 11:54:33 +0000549 DPU_CLK_ATTR3;
Usama Arifbec5afd2020-04-17 16:13:39 +0100550 pl_id = <1>;
551 ports {
552 #address-cells = <1>;
553 #size-cells = <0>;
554 port@0 {
555 reg = <0>;
556 };
557 };
558 };
559 };
Arunachalam Ganapathyc44e43d2020-11-17 15:05:01 +0000560
Davidson K1ad2c412023-01-13 14:02:13 +0530561 /*
562 * L3 cache in the DSU is the Memory System Component (MSC)
563 * The MPAM registers are accessed through utility bus in the DSU
564 */
Jackson Cooper-Driver2e962322024-08-28 11:46:35 +0100565 dsu-msc0 {
Davidson K1ad2c412023-01-13 14:02:13 +0530566 compatible = "arm,mpam-msc";
Jackson Cooper-Driver2e962322024-08-28 11:46:35 +0100567 reg = <DSU_MPAM_ADDR 0x0 0x2000>;
Davidson K1ad2c412023-01-13 14:02:13 +0530568 };
569
Davidson K65361052021-10-13 18:49:41 +0530570 ete0 {
571 compatible = "arm,embedded-trace-extension";
572 cpu = <&CPU0>;
573 };
574
575 ete1 {
576 compatible = "arm,embedded-trace-extension";
577 cpu = <&CPU1>;
578 };
579
580 ete2 {
581 compatible = "arm,embedded-trace-extension";
582 cpu = <&CPU2>;
583 };
584
585 ete3 {
586 compatible = "arm,embedded-trace-extension";
587 cpu = <&CPU3>;
588 };
589
590 ete4 {
591 compatible = "arm,embedded-trace-extension";
592 cpu = <&CPU4>;
593 };
594
595 ete5 {
596 compatible = "arm,embedded-trace-extension";
597 cpu = <&CPU5>;
598 };
599
600 ete6 {
601 compatible = "arm,embedded-trace-extension";
602 cpu = <&CPU6>;
603 };
604
605 ete7 {
606 compatible = "arm,embedded-trace-extension";
607 cpu = <&CPU7>;
608 };
609
Boyan Karatotev13b8e742023-11-14 13:57:56 +0000610 trbe {
Davidson K65361052021-10-13 18:49:41 +0530611 compatible = "arm,trace-buffer-extension";
Jagdish Gediyabd6755d2024-04-23 12:06:47 +0100612 interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW 0>;
Davidson K65361052021-10-13 18:49:41 +0530613 };
Arunachalam Ganapathy63128dc2022-04-11 14:43:15 +0100614
615 trusty {
616 #size-cells = <0x02>;
617 #address-cells = <0x02>;
618 ranges = <0x00>;
619 compatible = "android,trusty-v1";
620
621 virtio {
622 compatible = "android,trusty-virtio-v1";
623 };
624
625 test {
626 compatible = "android,trusty-test-v1";
627 };
628
629 log {
630 compatible = "android,trusty-log-v1";
631 };
632
633 irq {
634 ipi-range = <0x08 0x0f 0x08>;
635 interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
636 interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
637 compatible = "android,trusty-irq-v1";
638 };
639 };
Boyan Karatotevd2ca2872023-11-28 16:08:52 +0000640
641 /* used in U-boot, Linux doesn't care */
642 arm_ffa {
643 compatible = "arm,ffa";
644 method = "smc";
645 };
Usama Arifbec5afd2020-04-17 16:13:39 +0100646};