1b3a9737cSLeo Yan/* 2b3a9737cSLeo Yan * Copyright (c) 2020-2024, Arm Limited. All rights reserved. 3b3a9737cSLeo Yan * 4b3a9737cSLeo Yan * SPDX-License-Identifier: BSD-3-Clause 5b3a9737cSLeo Yan */ 6b3a9737cSLeo Yan 779c6ede0SLeo Yan/* If SCMI power domain control is enabled */ 879c6ede0SLeo Yan#if TC_SCMI_PD_CTRL_EN 979c6ede0SLeo Yan#define GPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 1) 1079c6ede0SLeo Yan#define DPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 2) 1179c6ede0SLeo Yan#endif /* TC_SCMI_PD_CTRL_EN */ 1279c6ede0SLeo Yan 1379c6ede0SLeo Yan/* Use SCMI controlled clocks */ 1479c6ede0SLeo Yan#if TC_DPU_USE_SCMI_CLK 1579c6ede0SLeo Yan#define DPU_CLK_ATTR1 \ 1679c6ede0SLeo Yan clocks = <&scmi_clk 0>; \ 1779c6ede0SLeo Yan clock-names = "aclk" 1879c6ede0SLeo Yan 1979c6ede0SLeo Yan#define DPU_CLK_ATTR2 \ 2079c6ede0SLeo Yan clocks = <&scmi_clk 1>; \ 2179c6ede0SLeo Yan clock-names = "pxclk" 2279c6ede0SLeo Yan 2379c6ede0SLeo Yan#define DPU_CLK_ATTR3 \ 2479c6ede0SLeo Yan clocks = <&scmi_clk 2>; \ 2579c6ede0SLeo Yan clock-names = "pxclk" \ 2679c6ede0SLeo Yan/* Use fixed clocks */ 2779c6ede0SLeo Yan#else /* !TC_DPU_USE_SCMI_CLK */ 2879c6ede0SLeo Yan#define DPU_CLK_ATTR1 \ 2979c6ede0SLeo Yan clocks = <&dpu_aclk>; \ 3079c6ede0SLeo Yan clock-names = "aclk" 3179c6ede0SLeo Yan 3279c6ede0SLeo Yan#define DPU_CLK_ATTR2 \ 3379c6ede0SLeo Yan clocks = <&dpu_pixel_clk>, <&dpu_aclk>; \ 3479c6ede0SLeo Yan clock-names = "pxclk", "aclk" 3579c6ede0SLeo Yan 3679c6ede0SLeo Yan#define DPU_CLK_ATTR3 DPU_CLK_ATTR2 3779c6ede0SLeo Yan#endif /* !TC_DPU_USE_SCMI_CLK */ 38b3a9737cSLeo Yan 39b3a9737cSLeo Yan/ { 40b3a9737cSLeo Yan compatible = "arm,tc"; 41b3a9737cSLeo Yan interrupt-parent = <&gic>; 42b3a9737cSLeo Yan #address-cells = <2>; 43b3a9737cSLeo Yan #size-cells = <2>; 44b3a9737cSLeo Yan 45b3a9737cSLeo Yan aliases { 46b3a9737cSLeo Yan serial0 = &os_uart; 47b3a9737cSLeo Yan }; 48b3a9737cSLeo Yan 49b3a9737cSLeo Yan chosen { 50b3a9737cSLeo Yan /* 51b3a9737cSLeo Yan * Add some dummy entropy for Linux so it 52b3a9737cSLeo Yan * doesn't delay the boot waiting for it. 53b3a9737cSLeo Yan */ 54b3a9737cSLeo Yan rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 55b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 56b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 57b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 58b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 59b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 60b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 61b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >; 62b3a9737cSLeo Yan }; 63b3a9737cSLeo Yan 64b3a9737cSLeo Yan cpus { 65b3a9737cSLeo Yan #address-cells = <1>; 66b3a9737cSLeo Yan #size-cells = <0>; 67b3a9737cSLeo Yan 68b3a9737cSLeo Yan cpu-map { 69b3a9737cSLeo Yan cluster0 { 70b3a9737cSLeo Yan core0 { 71b3a9737cSLeo Yan cpu = <&CPU0>; 72b3a9737cSLeo Yan }; 73b3a9737cSLeo Yan core1 { 74b3a9737cSLeo Yan cpu = <&CPU1>; 75b3a9737cSLeo Yan }; 76b3a9737cSLeo Yan core2 { 77b3a9737cSLeo Yan cpu = <&CPU2>; 78b3a9737cSLeo Yan }; 79b3a9737cSLeo Yan core3 { 80b3a9737cSLeo Yan cpu = <&CPU3>; 81b3a9737cSLeo Yan }; 82b3a9737cSLeo Yan core4 { 83b3a9737cSLeo Yan cpu = <&CPU4>; 84b3a9737cSLeo Yan }; 85b3a9737cSLeo Yan core5 { 86b3a9737cSLeo Yan cpu = <&CPU5>; 87b3a9737cSLeo Yan }; 88b3a9737cSLeo Yan core6 { 89b3a9737cSLeo Yan cpu = <&CPU6>; 90b3a9737cSLeo Yan }; 91b3a9737cSLeo Yan core7 { 92b3a9737cSLeo Yan cpu = <&CPU7>; 93b3a9737cSLeo Yan }; 94b3a9737cSLeo Yan }; 95b3a9737cSLeo Yan }; 96b3a9737cSLeo Yan 97b3a9737cSLeo Yan /* 98b3a9737cSLeo Yan * The timings below are just to demonstrate working cpuidle. 99b3a9737cSLeo Yan * These values may be inaccurate. 100b3a9737cSLeo Yan */ 101b3a9737cSLeo Yan idle-states { 102b3a9737cSLeo Yan entry-method = "psci"; 103b3a9737cSLeo Yan 104b3a9737cSLeo Yan CPU_SLEEP_0: cpu-sleep-0 { 105b3a9737cSLeo Yan compatible = "arm,idle-state"; 106b3a9737cSLeo Yan arm,psci-suspend-param = <0x0010000>; 107b3a9737cSLeo Yan local-timer-stop; 108b3a9737cSLeo Yan entry-latency-us = <300>; 109b3a9737cSLeo Yan exit-latency-us = <1200>; 110b3a9737cSLeo Yan min-residency-us = <2000>; 111b3a9737cSLeo Yan }; 112b3a9737cSLeo Yan CLUSTER_SLEEP_0: cluster-sleep-0 { 113b3a9737cSLeo Yan compatible = "arm,idle-state"; 114b3a9737cSLeo Yan arm,psci-suspend-param = <0x1010000>; 115b3a9737cSLeo Yan local-timer-stop; 116b3a9737cSLeo Yan entry-latency-us = <400>; 117b3a9737cSLeo Yan exit-latency-us = <1200>; 118b3a9737cSLeo Yan min-residency-us = <2500>; 119b3a9737cSLeo Yan }; 120b3a9737cSLeo Yan }; 121b3a9737cSLeo Yan 122b3a9737cSLeo Yan amus { 123b3a9737cSLeo Yan amu: amu-0 { 124b3a9737cSLeo Yan #address-cells = <1>; 125b3a9737cSLeo Yan #size-cells = <0>; 126b3a9737cSLeo Yan 127b3a9737cSLeo Yan mpmm_gear0: counter@0 { 128b3a9737cSLeo Yan reg = <0>; 129b3a9737cSLeo Yan enable-at-el3; 130b3a9737cSLeo Yan }; 131b3a9737cSLeo Yan 132b3a9737cSLeo Yan mpmm_gear1: counter@1 { 133b3a9737cSLeo Yan reg = <1>; 134b3a9737cSLeo Yan enable-at-el3; 135b3a9737cSLeo Yan }; 136b3a9737cSLeo Yan 137b3a9737cSLeo Yan mpmm_gear2: counter@2 { 138b3a9737cSLeo Yan reg = <2>; 139b3a9737cSLeo Yan enable-at-el3; 140b3a9737cSLeo Yan }; 141b3a9737cSLeo Yan }; 142b3a9737cSLeo Yan }; 143b3a9737cSLeo Yan 144b3a9737cSLeo Yan CPU0:cpu@0 { 145b3a9737cSLeo Yan device_type = "cpu"; 146b3a9737cSLeo Yan compatible = "arm,armv8"; 147b3a9737cSLeo Yan reg = <0x0>; 148b3a9737cSLeo Yan enable-method = "psci"; 149b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 150b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 151b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 152b3a9737cSLeo Yan amu = <&amu>; 153b3a9737cSLeo Yan supports-mpmm; 154b3a9737cSLeo Yan }; 155b3a9737cSLeo Yan 156b3a9737cSLeo Yan CPU1:cpu@100 { 157b3a9737cSLeo Yan device_type = "cpu"; 158b3a9737cSLeo Yan compatible = "arm,armv8"; 159b3a9737cSLeo Yan reg = <0x100>; 160b3a9737cSLeo Yan enable-method = "psci"; 161b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 162b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 163b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 164b3a9737cSLeo Yan amu = <&amu>; 165b3a9737cSLeo Yan supports-mpmm; 166b3a9737cSLeo Yan }; 167b3a9737cSLeo Yan 168b3a9737cSLeo Yan CPU2:cpu@200 { 169b3a9737cSLeo Yan device_type = "cpu"; 170b3a9737cSLeo Yan compatible = "arm,armv8"; 171b3a9737cSLeo Yan reg = <0x200>; 172b3a9737cSLeo Yan enable-method = "psci"; 173b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 174b3a9737cSLeo Yan amu = <&amu>; 175b3a9737cSLeo Yan supports-mpmm; 176b3a9737cSLeo Yan }; 177b3a9737cSLeo Yan 178b3a9737cSLeo Yan CPU3:cpu@300 { 179b3a9737cSLeo Yan device_type = "cpu"; 180b3a9737cSLeo Yan compatible = "arm,armv8"; 181b3a9737cSLeo Yan reg = <0x300>; 182b3a9737cSLeo Yan enable-method = "psci"; 183b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 184b3a9737cSLeo Yan amu = <&amu>; 185b3a9737cSLeo Yan supports-mpmm; 186b3a9737cSLeo Yan }; 187b3a9737cSLeo Yan 188b3a9737cSLeo Yan CPU4:cpu@400 { 189b3a9737cSLeo Yan device_type = "cpu"; 190b3a9737cSLeo Yan compatible = "arm,armv8"; 191b3a9737cSLeo Yan reg = <0x400>; 192b3a9737cSLeo Yan enable-method = "psci"; 193b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 194b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 195b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 196b3a9737cSLeo Yan amu = <&amu>; 197b3a9737cSLeo Yan supports-mpmm; 198b3a9737cSLeo Yan }; 199b3a9737cSLeo Yan 200b3a9737cSLeo Yan CPU5:cpu@500 { 201b3a9737cSLeo Yan device_type = "cpu"; 202b3a9737cSLeo Yan compatible = "arm,armv8"; 203b3a9737cSLeo Yan reg = <0x500>; 204b3a9737cSLeo Yan enable-method = "psci"; 205b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 206b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 207b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 208b3a9737cSLeo Yan amu = <&amu>; 209b3a9737cSLeo Yan supports-mpmm; 210b3a9737cSLeo Yan }; 211b3a9737cSLeo Yan 212b3a9737cSLeo Yan CPU6:cpu@600 { 213b3a9737cSLeo Yan device_type = "cpu"; 214b3a9737cSLeo Yan compatible = "arm,armv8"; 215b3a9737cSLeo Yan reg = <0x600>; 216b3a9737cSLeo Yan enable-method = "psci"; 217b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 218b3a9737cSLeo Yan amu = <&amu>; 219b3a9737cSLeo Yan supports-mpmm; 220b3a9737cSLeo Yan }; 221b3a9737cSLeo Yan 222b3a9737cSLeo Yan CPU7:cpu@700 { 223b3a9737cSLeo Yan device_type = "cpu"; 224b3a9737cSLeo Yan compatible = "arm,armv8"; 225b3a9737cSLeo Yan reg = <0x700>; 226b3a9737cSLeo Yan enable-method = "psci"; 227b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 228b3a9737cSLeo Yan amu = <&amu>; 229b3a9737cSLeo Yan supports-mpmm; 230b3a9737cSLeo Yan }; 231b3a9737cSLeo Yan }; 232b3a9737cSLeo Yan 233b3a9737cSLeo Yan reserved-memory { 234b3a9737cSLeo Yan #address-cells = <2>; 235b3a9737cSLeo Yan #size-cells = <2>; 236b3a9737cSLeo Yan ranges; 237b3a9737cSLeo Yan 238b3a9737cSLeo Yan linux,cma { 239b3a9737cSLeo Yan compatible = "shared-dma-pool"; 240b3a9737cSLeo Yan reusable; 241b3a9737cSLeo Yan size = <0x0 0x8000000>; 242b3a9737cSLeo Yan linux,cma-default; 243b3a9737cSLeo Yan }; 244b3a9737cSLeo Yan 245b3a9737cSLeo Yan optee { 246b3a9737cSLeo Yan compatible = "restricted-dma-pool"; 247b3a9737cSLeo Yan reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>; 248b3a9737cSLeo Yan }; 249b3a9737cSLeo Yan 250b3a9737cSLeo Yan fwu_mm { 251b3a9737cSLeo Yan reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>; 252b3a9737cSLeo Yan no-map; 253b3a9737cSLeo Yan }; 254b3a9737cSLeo Yan }; 255b3a9737cSLeo Yan 256b3a9737cSLeo Yan memory { 257b3a9737cSLeo Yan device_type = "memory"; 258b3a9737cSLeo Yan reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>, 259b3a9737cSLeo Yan <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE) 260b3a9737cSLeo Yan HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>; 261b3a9737cSLeo Yan }; 262b3a9737cSLeo Yan 263b3a9737cSLeo Yan psci { 264b3a9737cSLeo Yan compatible = "arm,psci-1.0", "arm,psci-0.2"; 265b3a9737cSLeo Yan method = "smc"; 266b3a9737cSLeo Yan }; 267b3a9737cSLeo Yan 2687aca660cSJagdish Gediya cpu-pmu-little { 2697aca660cSJagdish Gediya compatible = LIT_CPU_PMU_COMPATIBLE; 2707aca660cSJagdish Gediya interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_little>; 2717aca660cSJagdish Gediya status = "okay"; 2727aca660cSJagdish Gediya }; 2737aca660cSJagdish Gediya 2747aca660cSJagdish Gediya cpu-pmu-mid { 2757aca660cSJagdish Gediya compatible = MID_CPU_PMU_COMPATIBLE; 2767aca660cSJagdish Gediya interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>; 2777aca660cSJagdish Gediya status = "okay"; 2787aca660cSJagdish Gediya }; 2797aca660cSJagdish Gediya 2807aca660cSJagdish Gediya cpu-pmu-big { 2817aca660cSJagdish Gediya compatible = BIG_CPU_PMU_COMPATIBLE; 2827aca660cSJagdish Gediya interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>; 2837aca660cSJagdish Gediya status = "okay"; 284b3a9737cSLeo Yan }; 285b3a9737cSLeo Yan 286b3a9737cSLeo Yan sram: sram@6000000 { 287b3a9737cSLeo Yan compatible = "mmio-sram"; 288b3a9737cSLeo Yan reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>; 289b3a9737cSLeo Yan 290b3a9737cSLeo Yan #address-cells = <1>; 291b3a9737cSLeo Yan #size-cells = <1>; 292b3a9737cSLeo Yan ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>; 293b3a9737cSLeo Yan 294f2596ff1SBoyan Karatotev cpu_scp_scmi_a2p: scp-shmem@0 { 295b3a9737cSLeo Yan compatible = "arm,scmi-shmem"; 296b3a9737cSLeo Yan reg = <0x0 0x80>; 297b3a9737cSLeo Yan }; 298b3a9737cSLeo Yan }; 299b3a9737cSLeo Yan 300b3a9737cSLeo Yan mbox_db_rx: mhu@MHU_RX_ADDR { 3016c069e71SBoyan Karatotev compatible = MHU_RX_COMPAT; 3026c069e71SBoyan Karatotev reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 MHU_OFFSET>; 303b3a9737cSLeo Yan clocks = <&soc_refclk>; 304b3a9737cSLeo Yan clock-names = "apb_pclk"; 3056c069e71SBoyan Karatotev #mbox-cells = <MHU_MBOX_CELLS>; 3061300bbceSJagdish Gediya interrupts = <GIC_SPI MHU_RX_INT_NUM IRQ_TYPE_LEVEL_HIGH 0>; 3076c069e71SBoyan Karatotev interrupt-names = MHU_RX_INT_NAME; 308b3a9737cSLeo Yan }; 309b3a9737cSLeo Yan 310b3a9737cSLeo Yan mbox_db_tx: mhu@MHU_TX_ADDR { 3116c069e71SBoyan Karatotev compatible = MHU_TX_COMPAT; 3126c069e71SBoyan Karatotev reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 MHU_OFFSET>; 313b3a9737cSLeo Yan clocks = <&soc_refclk>; 314b3a9737cSLeo Yan clock-names = "apb_pclk"; 3156c069e71SBoyan Karatotev #mbox-cells = <MHU_MBOX_CELLS>; 3166c069e71SBoyan Karatotev interrupt-names = MHU_TX_INT_NAME; 317b3a9737cSLeo Yan }; 318b3a9737cSLeo Yan 319d42987c3SBoyan Karatotev firmware { 320b3a9737cSLeo Yan scmi { 321b3a9737cSLeo Yan compatible = "arm,scmi"; 322b3a9737cSLeo Yan mbox-names = "tx", "rx"; 323b3a9737cSLeo Yan #address-cells = <1>; 324b3a9737cSLeo Yan #size-cells = <0>; 325b3a9737cSLeo Yan 326b3a9737cSLeo Yan#if TC_SCMI_PD_CTRL_EN 327b3a9737cSLeo Yan scmi_devpd: protocol@11 { 328b3a9737cSLeo Yan reg = <0x11>; 329b3a9737cSLeo Yan #power-domain-cells = <1>; 330b3a9737cSLeo Yan }; 331b3a9737cSLeo Yan#endif /* TC_SCMI_PD_CTRL_EN */ 332b3a9737cSLeo Yan 333b3a9737cSLeo Yan scmi_dvfs: protocol@13 { 334b3a9737cSLeo Yan reg = <0x13>; 335b3a9737cSLeo Yan #clock-cells = <1>; 336b3a9737cSLeo Yan }; 337b3a9737cSLeo Yan 338b3a9737cSLeo Yan scmi_clk: protocol@14 { 339b3a9737cSLeo Yan reg = <0x14>; 340b3a9737cSLeo Yan #clock-cells = <1>; 341b3a9737cSLeo Yan }; 342b3a9737cSLeo Yan }; 343d42987c3SBoyan Karatotev }; 344b3a9737cSLeo Yan 345b3a9737cSLeo Yan gic: interrupt-controller@GIC_CTRL_ADDR { 346b3a9737cSLeo Yan compatible = "arm,gic-v3"; 347b3a9737cSLeo Yan #address-cells = <2>; 3481300bbceSJagdish Gediya #interrupt-cells = <4>; 349b3a9737cSLeo Yan #size-cells = <2>; 350b3a9737cSLeo Yan ranges; 351b3a9737cSLeo Yan interrupt-controller; 352b3a9737cSLeo Yan reg = <0x0 0x30000000 0 0x10000>, /* GICD */ 353b3a9737cSLeo Yan <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */ 3541300bbceSJagdish Gediya interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW 0>; 355b3a9737cSLeo Yan }; 356b3a9737cSLeo Yan 357b3a9737cSLeo Yan timer { 358b3a9737cSLeo Yan compatible = "arm,armv8-timer"; 3591300bbceSJagdish Gediya interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>, 3601300bbceSJagdish Gediya <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>, 3611300bbceSJagdish Gediya <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>, 3621300bbceSJagdish Gediya <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>; 363b3a9737cSLeo Yan }; 364b3a9737cSLeo Yan 36577080f6aSJagdish Gediya spe-pmu-mid { 36677080f6aSJagdish Gediya compatible = "arm,statistical-profiling-extension-v1"; 36777080f6aSJagdish Gediya interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>; 36877080f6aSJagdish Gediya status = "disabled"; 36977080f6aSJagdish Gediya }; 37077080f6aSJagdish Gediya 37177080f6aSJagdish Gediya spe-pmu-big { 37277080f6aSJagdish Gediya compatible = "arm,statistical-profiling-extension-v1"; 37377080f6aSJagdish Gediya interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>; 37477080f6aSJagdish Gediya status = "disabled"; 37577080f6aSJagdish Gediya }; 37677080f6aSJagdish Gediya 377b3a9737cSLeo Yan soc_refclk: refclk { 378b3a9737cSLeo Yan compatible = "fixed-clock"; 379b3a9737cSLeo Yan #clock-cells = <0>; 380b3a9737cSLeo Yan clock-frequency = <1000000000>; 381b3a9737cSLeo Yan clock-output-names = "apb_pclk"; 382b3a9737cSLeo Yan }; 383b3a9737cSLeo Yan 384b3a9737cSLeo Yan soc_refclk60mhz: refclk60mhz { 385b3a9737cSLeo Yan compatible = "fixed-clock"; 386b3a9737cSLeo Yan #clock-cells = <0>; 387b3a9737cSLeo Yan clock-frequency = <60000000>; 388b3a9737cSLeo Yan clock-output-names = "iofpga_clk"; 389b3a9737cSLeo Yan }; 390b3a9737cSLeo Yan 391b3a9737cSLeo Yan soc_uartclk: uartclk { 392b3a9737cSLeo Yan compatible = "fixed-clock"; 393b3a9737cSLeo Yan #clock-cells = <0>; 394b3a9737cSLeo Yan clock-frequency = <UARTCLK_FREQ>; 395b3a9737cSLeo Yan clock-output-names = "uartclk"; 396b3a9737cSLeo Yan }; 397b3a9737cSLeo Yan 398b3a9737cSLeo Yan /* soc_uart0 on FPGA, ap_ns_uart on FVP */ 399b3a9737cSLeo Yan os_uart: serial@2a400000 { 400b3a9737cSLeo Yan compatible = "arm,pl011", "arm,primecell"; 401b3a9737cSLeo Yan reg = <0x0 0x2A400000 0x0 UART_OFFSET>; 4021300bbceSJagdish Gediya interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH 0>; 403b3a9737cSLeo Yan clocks = <&soc_uartclk>, <&soc_refclk>; 404b3a9737cSLeo Yan clock-names = "uartclk", "apb_pclk"; 405b3a9737cSLeo Yan status = "okay"; 406b3a9737cSLeo Yan }; 407b3a9737cSLeo Yan 40879c6ede0SLeo Yan#if !TC_DPU_USE_SCMI_CLK 40979c6ede0SLeo Yan dpu_aclk: dpu_aclk { 41079c6ede0SLeo Yan compatible = "fixed-clock"; 41179c6ede0SLeo Yan #clock-cells = <0>; 41279c6ede0SLeo Yan clock-frequency = <VENCODER_TIMING_CLK>; 41379c6ede0SLeo Yan clock-output-names = "fpga:dpu_aclk"; 41479c6ede0SLeo Yan }; 41579c6ede0SLeo Yan 41679c6ede0SLeo Yan dpu_pixel_clk: dpu-pixel-clk { 41779c6ede0SLeo Yan compatible = "fixed-clock"; 41879c6ede0SLeo Yan #clock-cells = <0>; 41979c6ede0SLeo Yan clock-frequency = <VENCODER_TIMING_CLK>; 42079c6ede0SLeo Yan clock-output-names = "pxclk"; 42179c6ede0SLeo Yan }; 42279c6ede0SLeo Yan#endif /* !TC_DPU_USE_SCMI_CLK */ 42379c6ede0SLeo Yan 424b3a9737cSLeo Yan vencoder { 425b3a9737cSLeo Yan compatible = "drm,virtual-encoder"; 426b3a9737cSLeo Yan port { 427b3a9737cSLeo Yan vencoder_in: endpoint { 428b3a9737cSLeo Yan remote-endpoint = <&dp_pl0_out0>; 429b3a9737cSLeo Yan }; 430b3a9737cSLeo Yan }; 431b3a9737cSLeo Yan 432b3a9737cSLeo Yan display-timings { 433b3a9737cSLeo Yan timing-panel { 434b3a9737cSLeo Yan VENCODER_TIMING; 435b3a9737cSLeo Yan }; 436b3a9737cSLeo Yan }; 437b3a9737cSLeo Yan 438b3a9737cSLeo Yan }; 439b3a9737cSLeo Yan 440*e9e83e96SJackson Cooper-Driver ethernet: ethernet@ETHERNET_ADDR { 441*e9e83e96SJackson Cooper-Driver reg = <0x0 ADDRESSIFY(ETHERNET_ADDR) 0x0 0x10000>; 442*e9e83e96SJackson Cooper-Driver interrupts = <GIC_SPI ETHERNET_INT IRQ_TYPE_LEVEL_HIGH 0>; 443b3a9737cSLeo Yan 444b3a9737cSLeo Yan reg-io-width = <2>; 445b3a9737cSLeo Yan smsc,irq-push-pull; 446b3a9737cSLeo Yan }; 447b3a9737cSLeo Yan 448b3a9737cSLeo Yan bp_clock24mhz: clock24mhz { 449b3a9737cSLeo Yan compatible = "fixed-clock"; 450b3a9737cSLeo Yan #clock-cells = <0>; 451b3a9737cSLeo Yan clock-frequency = <24000000>; 452b3a9737cSLeo Yan clock-output-names = "bp:clock24mhz"; 453b3a9737cSLeo Yan }; 454b3a9737cSLeo Yan 455*e9e83e96SJackson Cooper-Driver sysreg: sysreg@SYS_REGS_ADDR { 456b3a9737cSLeo Yan compatible = "arm,vexpress-sysreg"; 457*e9e83e96SJackson Cooper-Driver reg = <0x0 ADDRESSIFY(SYS_REGS_ADDR) 0x0 0x1000>; 458b3a9737cSLeo Yan gpio-controller; 459b3a9737cSLeo Yan #gpio-cells = <2>; 460b3a9737cSLeo Yan }; 461b3a9737cSLeo Yan 462b3a9737cSLeo Yan fixed_3v3: v2m-3v3 { 463b3a9737cSLeo Yan compatible = "regulator-fixed"; 464b3a9737cSLeo Yan regulator-name = "3V3"; 465b3a9737cSLeo Yan regulator-min-microvolt = <3300000>; 466b3a9737cSLeo Yan regulator-max-microvolt = <3300000>; 467b3a9737cSLeo Yan regulator-always-on; 468b3a9737cSLeo Yan }; 469b3a9737cSLeo Yan 470*e9e83e96SJackson Cooper-Driver mmci: mmci@MMC_ADDR { 471b3a9737cSLeo Yan compatible = "arm,pl180", "arm,primecell"; 472*e9e83e96SJackson Cooper-Driver reg = <0x0 ADDRESSIFY(MMC_ADDR) 0x0 0x1000>; 473*e9e83e96SJackson Cooper-Driver interrupts = <GIC_SPI MMC_INT_0 IRQ_TYPE_LEVEL_HIGH 0>, 474*e9e83e96SJackson Cooper-Driver <GIC_SPI MMC_INT_1 IRQ_TYPE_LEVEL_HIGH 0>; 475b3a9737cSLeo Yan wp-gpios = <&sysreg 1 0>; 476b3a9737cSLeo Yan bus-width = <4>; 477b3a9737cSLeo Yan max-frequency = <25000000>; 478b3a9737cSLeo Yan vmmc-supply = <&fixed_3v3>; 479b3a9737cSLeo Yan clocks = <&bp_clock24mhz>, <&bp_clock24mhz>; 480b3a9737cSLeo Yan clock-names = "mclk", "apb_pclk"; 481b3a9737cSLeo Yan }; 482b3a9737cSLeo Yan 483b3a9737cSLeo Yan gpu_clk: gpu_clk { 484b3a9737cSLeo Yan compatible = "fixed-clock"; 485b3a9737cSLeo Yan #clock-cells = <0>; 486b3a9737cSLeo Yan clock-frequency = <1000000000>; 487b3a9737cSLeo Yan }; 488b3a9737cSLeo Yan 489b3a9737cSLeo Yan gpu_core_clk: gpu_core_clk { 490b3a9737cSLeo Yan compatible = "fixed-clock"; 491b3a9737cSLeo Yan #clock-cells = <0>; 492b3a9737cSLeo Yan clock-frequency = <1000000000>; 493b3a9737cSLeo Yan }; 494b3a9737cSLeo Yan 495b3a9737cSLeo Yan gpu: gpu@2d000000 { 496b3a9737cSLeo Yan compatible = "arm,mali-midgard"; 497b3a9737cSLeo Yan reg = <0x0 0x2d000000 0x0 0x200000>; 4981300bbceSJagdish Gediya interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH 0>, 4991300bbceSJagdish Gediya <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH 0>, 5001300bbceSJagdish Gediya <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>; 501b3a9737cSLeo Yan interrupt-names = "JOB", "MMU", "GPU"; 502b3a9737cSLeo Yan clocks = <&gpu_core_clk>; 503b3a9737cSLeo Yan clock-names = "shadercores"; 504b3a9737cSLeo Yan#if TC_SCMI_PD_CTRL_EN 505b3a9737cSLeo Yan power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>; 506b3a9737cSLeo Yan scmi-perf-domain = <3>; 507b3a9737cSLeo Yan#endif /* TC_SCMI_PD_CTRL_EN */ 508b3a9737cSLeo Yan 509bebefe0fSAngel Rodriguez Garcia pbha { 510bebefe0fSAngel Rodriguez Garcia int-id-override = <0 0x22>, <2 0x23>, <4 0x23>, <7 0x22>, 511bebefe0fSAngel Rodriguez Garcia <8 0x22>, <9 0x22>, <10 0x22>, <11 0x22>, 512bebefe0fSAngel Rodriguez Garcia <12 0x22>, <13 0x22>, <16 0x22>, <17 0x32>, 513bebefe0fSAngel Rodriguez Garcia <18 0x32>, <19 0x22>, <20 0x22>, <21 0x32>, 514bebefe0fSAngel Rodriguez Garcia <22 0x32>, <24 0x22>, <28 0x32>; 515bebefe0fSAngel Rodriguez Garcia propagate-bits = <0x0f>; 516bebefe0fSAngel Rodriguez Garcia }; 517b3a9737cSLeo Yan }; 518b3a9737cSLeo Yan 519b3a9737cSLeo Yan power_model_simple { 520b3a9737cSLeo Yan /* 521b3a9737cSLeo Yan * Numbers used are irrelevant to Titan, 522b3a9737cSLeo Yan * it helps suppressing the kernel warnings. 523b3a9737cSLeo Yan */ 524b3a9737cSLeo Yan compatible = "arm,mali-simple-power-model"; 525b3a9737cSLeo Yan static-coefficient = <2427750>; 526b3a9737cSLeo Yan dynamic-coefficient = <4687>; 527b3a9737cSLeo Yan ts = <20000 2000 (-20) 2>; 528b3a9737cSLeo Yan thermal-zone = ""; 529b3a9737cSLeo Yan }; 530b3a9737cSLeo Yan 5314c6960caSBen Horgan smmu_600: smmu@2ce00000 { 5324c6960caSBen Horgan compatible = "arm,smmu-v3"; 5334c6960caSBen Horgan reg = <0 0x2ce00000 0 0x20000>; 5341300bbceSJagdish Gediya interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING 0>, 5351300bbceSJagdish Gediya <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>, 5361300bbceSJagdish Gediya <GIC_SPI 76 IRQ_TYPE_EDGE_RISING 0>, 5371300bbceSJagdish Gediya <GIC_SPI 77 IRQ_TYPE_EDGE_RISING 0>; 5384c6960caSBen Horgan interrupt-names = "eventq", "priq", "cmdq-sync", "gerror"; 5394c6960caSBen Horgan #iommu-cells = <1>; 5404c6960caSBen Horgan status = "disabled"; 5414c6960caSBen Horgan }; 5424c6960caSBen Horgan 543b3a9737cSLeo Yan smmu_700: iommu@3f000000 { 544b3a9737cSLeo Yan #iommu-cells = <1>; 545b3a9737cSLeo Yan compatible = "arm,smmu-v3"; 546b3a9737cSLeo Yan reg = <0x0 0x3f000000 0x0 0x5000000>; 5471300bbceSJagdish Gediya interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING 0>, 5481300bbceSJagdish Gediya <GIC_SPI 229 IRQ_TYPE_EDGE_RISING 0>, 5491300bbceSJagdish Gediya <GIC_SPI 230 IRQ_TYPE_EDGE_RISING 0>; 550b3a9737cSLeo Yan interrupt-names = "eventq", "cmdq-sync", "gerror"; 551b3a9737cSLeo Yan dma-coherent; 5522458b387SLeo Yan status = "disabled"; 553b3a9737cSLeo Yan }; 554b3a9737cSLeo Yan 5550458d3acSJackson Cooper-Driver smmu_700_dpu: iommu@4002a00000 { 5560458d3acSJackson Cooper-Driver #iommu-cells = <1>; 5570458d3acSJackson Cooper-Driver compatible = "arm,smmu-v3"; 5580458d3acSJackson Cooper-Driver reg = <HI(0x4002a00000) LO(0x4002a00000) 0x0 0x5000000>; 5591300bbceSJagdish Gediya interrupts = <GIC_SPI 481 IRQ_TYPE_EDGE_RISING 0>, 5601300bbceSJagdish Gediya <GIC_SPI 482 IRQ_TYPE_EDGE_RISING 0>, 5611300bbceSJagdish Gediya <GIC_SPI 483 IRQ_TYPE_EDGE_RISING 0>; 5620458d3acSJackson Cooper-Driver interrupt-names = "eventq", "cmdq-sync", "gerror"; 5630458d3acSJackson Cooper-Driver dma-coherent; 5640458d3acSJackson Cooper-Driver status = "disabled"; 5650458d3acSJackson Cooper-Driver }; 5660458d3acSJackson Cooper-Driver 567b3a9737cSLeo Yan dp0: display@DPU_ADDR { 568b3a9737cSLeo Yan #address-cells = <1>; 569b3a9737cSLeo Yan #size-cells = <0>; 570b3a9737cSLeo Yan compatible = "arm,mali-d71"; 571b3a9737cSLeo Yan reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>; 5721300bbceSJagdish Gediya interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH 0>; 573b3a9737cSLeo Yan interrupt-names = "DPU"; 574b3a9737cSLeo Yan DPU_CLK_ATTR1; 575b3a9737cSLeo Yan 576b3a9737cSLeo Yan pl0: pipeline@0 { 577b3a9737cSLeo Yan reg = <0>; 578b3a9737cSLeo Yan DPU_CLK_ATTR2; 579b3a9737cSLeo Yan pl_id = <0>; 580b3a9737cSLeo Yan ports { 581b3a9737cSLeo Yan #address-cells = <1>; 582b3a9737cSLeo Yan #size-cells = <0>; 583b3a9737cSLeo Yan port@0 { 584b3a9737cSLeo Yan reg = <0>; 585b3a9737cSLeo Yan dp_pl0_out0: endpoint { 586b3a9737cSLeo Yan remote-endpoint = <&vencoder_in>; 587b3a9737cSLeo Yan }; 588b3a9737cSLeo Yan }; 589b3a9737cSLeo Yan }; 590b3a9737cSLeo Yan }; 591b3a9737cSLeo Yan 592b3a9737cSLeo Yan pl1: pipeline@1 { 593b3a9737cSLeo Yan reg = <1>; 594b3a9737cSLeo Yan DPU_CLK_ATTR3; 595b3a9737cSLeo Yan pl_id = <1>; 596b3a9737cSLeo Yan ports { 597b3a9737cSLeo Yan #address-cells = <1>; 598b3a9737cSLeo Yan #size-cells = <0>; 599b3a9737cSLeo Yan port@0 { 600b3a9737cSLeo Yan reg = <0>; 601b3a9737cSLeo Yan }; 602b3a9737cSLeo Yan }; 603b3a9737cSLeo Yan }; 604b3a9737cSLeo Yan }; 605b3a9737cSLeo Yan 606b3a9737cSLeo Yan /* 607b3a9737cSLeo Yan * L3 cache in the DSU is the Memory System Component (MSC) 608b3a9737cSLeo Yan * The MPAM registers are accessed through utility bus in the DSU 609b3a9737cSLeo Yan */ 610b3a9737cSLeo Yan msc0 { 611b3a9737cSLeo Yan compatible = "arm,mpam-msc"; 612b3a9737cSLeo Yan reg = <MPAM_ADDR 0x0 0x2000>; 613b3a9737cSLeo Yan }; 614b3a9737cSLeo Yan 615b3a9737cSLeo Yan ete0 { 616b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 617b3a9737cSLeo Yan cpu = <&CPU0>; 618b3a9737cSLeo Yan }; 619b3a9737cSLeo Yan 620b3a9737cSLeo Yan ete1 { 621b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 622b3a9737cSLeo Yan cpu = <&CPU1>; 623b3a9737cSLeo Yan }; 624b3a9737cSLeo Yan 625b3a9737cSLeo Yan ete2 { 626b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 627b3a9737cSLeo Yan cpu = <&CPU2>; 628b3a9737cSLeo Yan }; 629b3a9737cSLeo Yan 630b3a9737cSLeo Yan ete3 { 631b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 632b3a9737cSLeo Yan cpu = <&CPU3>; 633b3a9737cSLeo Yan }; 634b3a9737cSLeo Yan 635b3a9737cSLeo Yan ete4 { 636b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 637b3a9737cSLeo Yan cpu = <&CPU4>; 638b3a9737cSLeo Yan }; 639b3a9737cSLeo Yan 640b3a9737cSLeo Yan ete5 { 641b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 642b3a9737cSLeo Yan cpu = <&CPU5>; 643b3a9737cSLeo Yan }; 644b3a9737cSLeo Yan 645b3a9737cSLeo Yan ete6 { 646b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 647b3a9737cSLeo Yan cpu = <&CPU6>; 648b3a9737cSLeo Yan }; 649b3a9737cSLeo Yan 650b3a9737cSLeo Yan ete7 { 651b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 652b3a9737cSLeo Yan cpu = <&CPU7>; 653b3a9737cSLeo Yan }; 654b3a9737cSLeo Yan 655b3a9737cSLeo Yan trbe { 656b3a9737cSLeo Yan compatible = "arm,trace-buffer-extension"; 6571300bbceSJagdish Gediya interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW 0>; 658b3a9737cSLeo Yan }; 659b3a9737cSLeo Yan 660b3a9737cSLeo Yan trusty { 661b3a9737cSLeo Yan #size-cells = <0x02>; 662b3a9737cSLeo Yan #address-cells = <0x02>; 663b3a9737cSLeo Yan ranges = <0x00>; 664b3a9737cSLeo Yan compatible = "android,trusty-v1"; 665b3a9737cSLeo Yan 666b3a9737cSLeo Yan virtio { 667b3a9737cSLeo Yan compatible = "android,trusty-virtio-v1"; 668b3a9737cSLeo Yan }; 669b3a9737cSLeo Yan 670b3a9737cSLeo Yan test { 671b3a9737cSLeo Yan compatible = "android,trusty-test-v1"; 672b3a9737cSLeo Yan }; 673b3a9737cSLeo Yan 674b3a9737cSLeo Yan log { 675b3a9737cSLeo Yan compatible = "android,trusty-log-v1"; 676b3a9737cSLeo Yan }; 677b3a9737cSLeo Yan 678b3a9737cSLeo Yan irq { 679b3a9737cSLeo Yan ipi-range = <0x08 0x0f 0x08>; 680b3a9737cSLeo Yan interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>; 681b3a9737cSLeo Yan interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>; 682b3a9737cSLeo Yan compatible = "android,trusty-irq-v1"; 683b3a9737cSLeo Yan }; 684b3a9737cSLeo Yan }; 685b3a9737cSLeo Yan 686b3a9737cSLeo Yan /* used in U-boot, Linux doesn't care */ 687b3a9737cSLeo Yan arm_ffa { 688b3a9737cSLeo Yan compatible = "arm,ffa"; 689b3a9737cSLeo Yan method = "smc"; 690b3a9737cSLeo Yan }; 691b3a9737cSLeo Yan}; 692