1*b3a9737cSLeo Yan/* 2*b3a9737cSLeo Yan * Copyright (c) 2020-2024, Arm Limited. All rights reserved. 3*b3a9737cSLeo Yan * 4*b3a9737cSLeo Yan * SPDX-License-Identifier: BSD-3-Clause 5*b3a9737cSLeo Yan */ 6*b3a9737cSLeo Yan 7*b3a9737cSLeo Yan#include "tc_vers.dtsi" 8*b3a9737cSLeo Yan 9*b3a9737cSLeo Yan/ { 10*b3a9737cSLeo Yan compatible = "arm,tc"; 11*b3a9737cSLeo Yan interrupt-parent = <&gic>; 12*b3a9737cSLeo Yan #address-cells = <2>; 13*b3a9737cSLeo Yan #size-cells = <2>; 14*b3a9737cSLeo Yan 15*b3a9737cSLeo Yan aliases { 16*b3a9737cSLeo Yan serial0 = &os_uart; 17*b3a9737cSLeo Yan }; 18*b3a9737cSLeo Yan 19*b3a9737cSLeo Yan chosen { 20*b3a9737cSLeo Yan stdout-path = STDOUT_PATH; 21*b3a9737cSLeo Yan /* 22*b3a9737cSLeo Yan * Add some dummy entropy for Linux so it 23*b3a9737cSLeo Yan * doesn't delay the boot waiting for it. 24*b3a9737cSLeo Yan */ 25*b3a9737cSLeo Yan rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 26*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 27*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 28*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 29*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 30*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 31*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \ 32*b3a9737cSLeo Yan 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >; 33*b3a9737cSLeo Yan }; 34*b3a9737cSLeo Yan 35*b3a9737cSLeo Yan cpus { 36*b3a9737cSLeo Yan #address-cells = <1>; 37*b3a9737cSLeo Yan #size-cells = <0>; 38*b3a9737cSLeo Yan 39*b3a9737cSLeo Yan cpu-map { 40*b3a9737cSLeo Yan cluster0 { 41*b3a9737cSLeo Yan core0 { 42*b3a9737cSLeo Yan cpu = <&CPU0>; 43*b3a9737cSLeo Yan }; 44*b3a9737cSLeo Yan core1 { 45*b3a9737cSLeo Yan cpu = <&CPU1>; 46*b3a9737cSLeo Yan }; 47*b3a9737cSLeo Yan core2 { 48*b3a9737cSLeo Yan cpu = <&CPU2>; 49*b3a9737cSLeo Yan }; 50*b3a9737cSLeo Yan core3 { 51*b3a9737cSLeo Yan cpu = <&CPU3>; 52*b3a9737cSLeo Yan }; 53*b3a9737cSLeo Yan core4 { 54*b3a9737cSLeo Yan cpu = <&CPU4>; 55*b3a9737cSLeo Yan }; 56*b3a9737cSLeo Yan core5 { 57*b3a9737cSLeo Yan cpu = <&CPU5>; 58*b3a9737cSLeo Yan }; 59*b3a9737cSLeo Yan core6 { 60*b3a9737cSLeo Yan cpu = <&CPU6>; 61*b3a9737cSLeo Yan }; 62*b3a9737cSLeo Yan core7 { 63*b3a9737cSLeo Yan cpu = <&CPU7>; 64*b3a9737cSLeo Yan }; 65*b3a9737cSLeo Yan#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 66*b3a9737cSLeo Yan core8 { 67*b3a9737cSLeo Yan cpu = <&CPU8>; 68*b3a9737cSLeo Yan }; 69*b3a9737cSLeo Yan core9 { 70*b3a9737cSLeo Yan cpu = <&CPU9>; 71*b3a9737cSLeo Yan }; 72*b3a9737cSLeo Yan core10 { 73*b3a9737cSLeo Yan cpu = <&CPU10>; 74*b3a9737cSLeo Yan }; 75*b3a9737cSLeo Yan core11 { 76*b3a9737cSLeo Yan cpu = <&CPU11>; 77*b3a9737cSLeo Yan }; 78*b3a9737cSLeo Yan core12 { 79*b3a9737cSLeo Yan cpu = <&CPU12>; 80*b3a9737cSLeo Yan }; 81*b3a9737cSLeo Yan core13 { 82*b3a9737cSLeo Yan cpu = <&CPU13>; 83*b3a9737cSLeo Yan }; 84*b3a9737cSLeo Yan#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */ 85*b3a9737cSLeo Yan }; 86*b3a9737cSLeo Yan }; 87*b3a9737cSLeo Yan 88*b3a9737cSLeo Yan /* 89*b3a9737cSLeo Yan * The timings below are just to demonstrate working cpuidle. 90*b3a9737cSLeo Yan * These values may be inaccurate. 91*b3a9737cSLeo Yan */ 92*b3a9737cSLeo Yan idle-states { 93*b3a9737cSLeo Yan entry-method = "psci"; 94*b3a9737cSLeo Yan 95*b3a9737cSLeo Yan CPU_SLEEP_0: cpu-sleep-0 { 96*b3a9737cSLeo Yan compatible = "arm,idle-state"; 97*b3a9737cSLeo Yan arm,psci-suspend-param = <0x0010000>; 98*b3a9737cSLeo Yan local-timer-stop; 99*b3a9737cSLeo Yan entry-latency-us = <300>; 100*b3a9737cSLeo Yan exit-latency-us = <1200>; 101*b3a9737cSLeo Yan min-residency-us = <2000>; 102*b3a9737cSLeo Yan }; 103*b3a9737cSLeo Yan CLUSTER_SLEEP_0: cluster-sleep-0 { 104*b3a9737cSLeo Yan compatible = "arm,idle-state"; 105*b3a9737cSLeo Yan arm,psci-suspend-param = <0x1010000>; 106*b3a9737cSLeo Yan local-timer-stop; 107*b3a9737cSLeo Yan entry-latency-us = <400>; 108*b3a9737cSLeo Yan exit-latency-us = <1200>; 109*b3a9737cSLeo Yan min-residency-us = <2500>; 110*b3a9737cSLeo Yan }; 111*b3a9737cSLeo Yan }; 112*b3a9737cSLeo Yan 113*b3a9737cSLeo Yan amus { 114*b3a9737cSLeo Yan amu: amu-0 { 115*b3a9737cSLeo Yan #address-cells = <1>; 116*b3a9737cSLeo Yan #size-cells = <0>; 117*b3a9737cSLeo Yan 118*b3a9737cSLeo Yan mpmm_gear0: counter@0 { 119*b3a9737cSLeo Yan reg = <0>; 120*b3a9737cSLeo Yan enable-at-el3; 121*b3a9737cSLeo Yan }; 122*b3a9737cSLeo Yan 123*b3a9737cSLeo Yan mpmm_gear1: counter@1 { 124*b3a9737cSLeo Yan reg = <1>; 125*b3a9737cSLeo Yan enable-at-el3; 126*b3a9737cSLeo Yan }; 127*b3a9737cSLeo Yan 128*b3a9737cSLeo Yan mpmm_gear2: counter@2 { 129*b3a9737cSLeo Yan reg = <2>; 130*b3a9737cSLeo Yan enable-at-el3; 131*b3a9737cSLeo Yan }; 132*b3a9737cSLeo Yan }; 133*b3a9737cSLeo Yan }; 134*b3a9737cSLeo Yan 135*b3a9737cSLeo Yan CPU0:cpu@0 { 136*b3a9737cSLeo Yan device_type = "cpu"; 137*b3a9737cSLeo Yan compatible = "arm,armv8"; 138*b3a9737cSLeo Yan reg = <0x0>; 139*b3a9737cSLeo Yan enable-method = "psci"; 140*b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 141*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 142*b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 143*b3a9737cSLeo Yan amu = <&amu>; 144*b3a9737cSLeo Yan supports-mpmm; 145*b3a9737cSLeo Yan }; 146*b3a9737cSLeo Yan 147*b3a9737cSLeo Yan CPU1:cpu@100 { 148*b3a9737cSLeo Yan device_type = "cpu"; 149*b3a9737cSLeo Yan compatible = "arm,armv8"; 150*b3a9737cSLeo Yan reg = <0x100>; 151*b3a9737cSLeo Yan enable-method = "psci"; 152*b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 153*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 154*b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 155*b3a9737cSLeo Yan amu = <&amu>; 156*b3a9737cSLeo Yan supports-mpmm; 157*b3a9737cSLeo Yan }; 158*b3a9737cSLeo Yan 159*b3a9737cSLeo Yan CPU2:cpu@200 { 160*b3a9737cSLeo Yan device_type = "cpu"; 161*b3a9737cSLeo Yan compatible = "arm,armv8"; 162*b3a9737cSLeo Yan reg = <0x200>; 163*b3a9737cSLeo Yan enable-method = "psci"; 164*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 165*b3a9737cSLeo Yan#if TARGET_PLATFORM <= 2 166*b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 167*b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 168*b3a9737cSLeo Yan#elif TARGET_PLATFORM == 3 169*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 170*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 171*b3a9737cSLeo Yan#endif /* TARGET_PLATFORM == 3 */ 172*b3a9737cSLeo Yan amu = <&amu>; 173*b3a9737cSLeo Yan supports-mpmm; 174*b3a9737cSLeo Yan }; 175*b3a9737cSLeo Yan 176*b3a9737cSLeo Yan CPU3:cpu@300 { 177*b3a9737cSLeo Yan device_type = "cpu"; 178*b3a9737cSLeo Yan compatible = "arm,armv8"; 179*b3a9737cSLeo Yan reg = <0x300>; 180*b3a9737cSLeo Yan enable-method = "psci"; 181*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 182*b3a9737cSLeo Yan#if TARGET_PLATFORM <= 2 183*b3a9737cSLeo Yan clocks = <&scmi_dvfs 0>; 184*b3a9737cSLeo Yan capacity-dmips-mhz = <LIT_CAPACITY>; 185*b3a9737cSLeo Yan#elif TARGET_PLATFORM == 3 186*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 187*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 188*b3a9737cSLeo Yan#endif /* TARGET_PLATFORM == 3 */ 189*b3a9737cSLeo Yan amu = <&amu>; 190*b3a9737cSLeo Yan supports-mpmm; 191*b3a9737cSLeo Yan }; 192*b3a9737cSLeo Yan 193*b3a9737cSLeo Yan CPU4:cpu@400 { 194*b3a9737cSLeo Yan device_type = "cpu"; 195*b3a9737cSLeo Yan compatible = "arm,armv8"; 196*b3a9737cSLeo Yan reg = <0x400>; 197*b3a9737cSLeo Yan enable-method = "psci"; 198*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 199*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 200*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 201*b3a9737cSLeo Yan amu = <&amu>; 202*b3a9737cSLeo Yan supports-mpmm; 203*b3a9737cSLeo Yan }; 204*b3a9737cSLeo Yan 205*b3a9737cSLeo Yan CPU5:cpu@500 { 206*b3a9737cSLeo Yan device_type = "cpu"; 207*b3a9737cSLeo Yan compatible = "arm,armv8"; 208*b3a9737cSLeo Yan reg = <0x500>; 209*b3a9737cSLeo Yan enable-method = "psci"; 210*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 211*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 212*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 213*b3a9737cSLeo Yan amu = <&amu>; 214*b3a9737cSLeo Yan supports-mpmm; 215*b3a9737cSLeo Yan }; 216*b3a9737cSLeo Yan 217*b3a9737cSLeo Yan CPU6:cpu@600 { 218*b3a9737cSLeo Yan device_type = "cpu"; 219*b3a9737cSLeo Yan compatible = "arm,armv8"; 220*b3a9737cSLeo Yan reg = <0x600>; 221*b3a9737cSLeo Yan enable-method = "psci"; 222*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 223*b3a9737cSLeo Yan#if TARGET_PLATFORM <= 2 224*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 225*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 226*b3a9737cSLeo Yan#elif TARGET_PLATFORM == 3 227*b3a9737cSLeo Yan clocks = <&scmi_dvfs 2>; 228*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG_CAPACITY>; 229*b3a9737cSLeo Yan#endif /* TARGET_PLATFORM == 3 */ 230*b3a9737cSLeo Yan amu = <&amu>; 231*b3a9737cSLeo Yan supports-mpmm; 232*b3a9737cSLeo Yan }; 233*b3a9737cSLeo Yan 234*b3a9737cSLeo Yan CPU7:cpu@700 { 235*b3a9737cSLeo Yan device_type = "cpu"; 236*b3a9737cSLeo Yan compatible = "arm,armv8"; 237*b3a9737cSLeo Yan reg = <0x700>; 238*b3a9737cSLeo Yan enable-method = "psci"; 239*b3a9737cSLeo Yan cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; 240*b3a9737cSLeo Yan#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 241*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 242*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 243*b3a9737cSLeo Yan#else 244*b3a9737cSLeo Yan clocks = <&scmi_dvfs 2>; 245*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG_CAPACITY>; 246*b3a9737cSLeo Yan#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */ 247*b3a9737cSLeo Yan amu = <&amu>; 248*b3a9737cSLeo Yan supports-mpmm; 249*b3a9737cSLeo Yan }; 250*b3a9737cSLeo Yan 251*b3a9737cSLeo Yan#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 252*b3a9737cSLeo Yan CPU8:cpu@800 { 253*b3a9737cSLeo Yan device_type = "cpu"; 254*b3a9737cSLeo Yan compatible = "arm,armv8"; 255*b3a9737cSLeo Yan reg = <0x800>; 256*b3a9737cSLeo Yan enable-method = "psci"; 257*b3a9737cSLeo Yan clocks = <&scmi_dvfs 1>; 258*b3a9737cSLeo Yan capacity-dmips-mhz = <MID_CAPACITY>; 259*b3a9737cSLeo Yan amu = <&amu>; 260*b3a9737cSLeo Yan supports-mpmm; 261*b3a9737cSLeo Yan }; 262*b3a9737cSLeo Yan 263*b3a9737cSLeo Yan CPU9:cpu@900 { 264*b3a9737cSLeo Yan device_type = "cpu"; 265*b3a9737cSLeo Yan compatible = "arm,armv8"; 266*b3a9737cSLeo Yan reg = <0x900>; 267*b3a9737cSLeo Yan enable-method = "psci"; 268*b3a9737cSLeo Yan clocks = <&scmi_dvfs 2>; 269*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG2_CAPACITY>; 270*b3a9737cSLeo Yan amu = <&amu>; 271*b3a9737cSLeo Yan supports-mpmm; 272*b3a9737cSLeo Yan }; 273*b3a9737cSLeo Yan 274*b3a9737cSLeo Yan CPU10:cpu@A00 { 275*b3a9737cSLeo Yan device_type = "cpu"; 276*b3a9737cSLeo Yan compatible = "arm,armv8"; 277*b3a9737cSLeo Yan reg = <0xA00>; 278*b3a9737cSLeo Yan enable-method = "psci"; 279*b3a9737cSLeo Yan clocks = <&scmi_dvfs 2>; 280*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG2_CAPACITY>; 281*b3a9737cSLeo Yan amu = <&amu>; 282*b3a9737cSLeo Yan supports-mpmm; 283*b3a9737cSLeo Yan }; 284*b3a9737cSLeo Yan 285*b3a9737cSLeo Yan CPU11:cpu@B00 { 286*b3a9737cSLeo Yan device_type = "cpu"; 287*b3a9737cSLeo Yan compatible = "arm,armv8"; 288*b3a9737cSLeo Yan reg = <0xB00>; 289*b3a9737cSLeo Yan enable-method = "psci"; 290*b3a9737cSLeo Yan clocks = <&scmi_dvfs 2>; 291*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG2_CAPACITY>; 292*b3a9737cSLeo Yan amu = <&amu>; 293*b3a9737cSLeo Yan supports-mpmm; 294*b3a9737cSLeo Yan }; 295*b3a9737cSLeo Yan 296*b3a9737cSLeo Yan CPU12:cpu@C00 { 297*b3a9737cSLeo Yan device_type = "cpu"; 298*b3a9737cSLeo Yan compatible = "arm,armv8"; 299*b3a9737cSLeo Yan reg = <0xC00>; 300*b3a9737cSLeo Yan enable-method = "psci"; 301*b3a9737cSLeo Yan clocks = <&scmi_dvfs 3>; 302*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG_CAPACITY>; 303*b3a9737cSLeo Yan amu = <&amu>; 304*b3a9737cSLeo Yan supports-mpmm; 305*b3a9737cSLeo Yan }; 306*b3a9737cSLeo Yan 307*b3a9737cSLeo Yan CPU13:cpu@D00 { 308*b3a9737cSLeo Yan device_type = "cpu"; 309*b3a9737cSLeo Yan compatible = "arm,armv8"; 310*b3a9737cSLeo Yan reg = <0xD00>; 311*b3a9737cSLeo Yan enable-method = "psci"; 312*b3a9737cSLeo Yan clocks = <&scmi_dvfs 3>; 313*b3a9737cSLeo Yan capacity-dmips-mhz = <BIG_CAPACITY>; 314*b3a9737cSLeo Yan amu = <&amu>; 315*b3a9737cSLeo Yan supports-mpmm; 316*b3a9737cSLeo Yan }; 317*b3a9737cSLeo Yan#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */ 318*b3a9737cSLeo Yan }; 319*b3a9737cSLeo Yan 320*b3a9737cSLeo Yan reserved-memory { 321*b3a9737cSLeo Yan #address-cells = <2>; 322*b3a9737cSLeo Yan #size-cells = <2>; 323*b3a9737cSLeo Yan ranges; 324*b3a9737cSLeo Yan 325*b3a9737cSLeo Yan linux,cma { 326*b3a9737cSLeo Yan compatible = "shared-dma-pool"; 327*b3a9737cSLeo Yan reusable; 328*b3a9737cSLeo Yan size = <0x0 0x8000000>; 329*b3a9737cSLeo Yan linux,cma-default; 330*b3a9737cSLeo Yan }; 331*b3a9737cSLeo Yan 332*b3a9737cSLeo Yan optee { 333*b3a9737cSLeo Yan compatible = "restricted-dma-pool"; 334*b3a9737cSLeo Yan reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>; 335*b3a9737cSLeo Yan }; 336*b3a9737cSLeo Yan 337*b3a9737cSLeo Yan fwu_mm { 338*b3a9737cSLeo Yan reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>; 339*b3a9737cSLeo Yan no-map; 340*b3a9737cSLeo Yan }; 341*b3a9737cSLeo Yan }; 342*b3a9737cSLeo Yan 343*b3a9737cSLeo Yan memory { 344*b3a9737cSLeo Yan device_type = "memory"; 345*b3a9737cSLeo Yan reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>, 346*b3a9737cSLeo Yan <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE) 347*b3a9737cSLeo Yan HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>; 348*b3a9737cSLeo Yan }; 349*b3a9737cSLeo Yan 350*b3a9737cSLeo Yan psci { 351*b3a9737cSLeo Yan compatible = "arm,psci-1.0", "arm,psci-0.2"; 352*b3a9737cSLeo Yan method = "smc"; 353*b3a9737cSLeo Yan }; 354*b3a9737cSLeo Yan 355*b3a9737cSLeo Yan cpu-pmu { 356*b3a9737cSLeo Yan compatible = "arm,armv8-pmuv3"; 357*b3a9737cSLeo Yan interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; 358*b3a9737cSLeo Yan interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>, 359*b3a9737cSLeo Yan <&CPU4>, <&CPU5>, <&CPU6>, <&CPU7> 360*b3a9737cSLeo Yan#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 361*b3a9737cSLeo Yan ,<&CPU8>, <&CPU9>, <&CPU10>, <&CPU11>, 362*b3a9737cSLeo Yan <&CPU12>, <&CPU13> 363*b3a9737cSLeo Yan#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */ 364*b3a9737cSLeo Yan ; 365*b3a9737cSLeo Yan }; 366*b3a9737cSLeo Yan 367*b3a9737cSLeo Yan sram: sram@6000000 { 368*b3a9737cSLeo Yan compatible = "mmio-sram"; 369*b3a9737cSLeo Yan reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>; 370*b3a9737cSLeo Yan 371*b3a9737cSLeo Yan #address-cells = <1>; 372*b3a9737cSLeo Yan #size-cells = <1>; 373*b3a9737cSLeo Yan ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>; 374*b3a9737cSLeo Yan 375*b3a9737cSLeo Yan cpu_scp_scmi_mem: scp-shmem@0 { 376*b3a9737cSLeo Yan compatible = "arm,scmi-shmem"; 377*b3a9737cSLeo Yan reg = <0x0 0x80>; 378*b3a9737cSLeo Yan }; 379*b3a9737cSLeo Yan }; 380*b3a9737cSLeo Yan 381*b3a9737cSLeo Yan mbox_db_rx: mhu@MHU_RX_ADDR { 382*b3a9737cSLeo Yan compatible = "arm,mhuv2-rx","arm,primecell"; 383*b3a9737cSLeo Yan reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 0x1000>; 384*b3a9737cSLeo Yan clocks = <&soc_refclk>; 385*b3a9737cSLeo Yan clock-names = "apb_pclk"; 386*b3a9737cSLeo Yan #mbox-cells = <2>; 387*b3a9737cSLeo Yan interrupts = <GIC_SPI INT_MBOX_RX IRQ_TYPE_LEVEL_HIGH>; 388*b3a9737cSLeo Yan interrupt-names = "mhu_rx"; 389*b3a9737cSLeo Yan mhu-protocol = "doorbell"; 390*b3a9737cSLeo Yan arm,mhuv2-protocols = <0 1>; 391*b3a9737cSLeo Yan }; 392*b3a9737cSLeo Yan 393*b3a9737cSLeo Yan mbox_db_tx: mhu@MHU_TX_ADDR { 394*b3a9737cSLeo Yan compatible = "arm,mhuv2-tx","arm,primecell"; 395*b3a9737cSLeo Yan reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 0x1000>; 396*b3a9737cSLeo Yan clocks = <&soc_refclk>; 397*b3a9737cSLeo Yan clock-names = "apb_pclk"; 398*b3a9737cSLeo Yan #mbox-cells = <2>; 399*b3a9737cSLeo Yan interrupt-names = "mhu_tx"; 400*b3a9737cSLeo Yan mhu-protocol = "doorbell"; 401*b3a9737cSLeo Yan arm,mhuv2-protocols = <0 1>; 402*b3a9737cSLeo Yan }; 403*b3a9737cSLeo Yan 404*b3a9737cSLeo Yan scmi { 405*b3a9737cSLeo Yan compatible = "arm,scmi"; 406*b3a9737cSLeo Yan mbox-names = "tx", "rx"; 407*b3a9737cSLeo Yan mboxes = <&mbox_db_tx 0 0 &mbox_db_rx 0 0 >; 408*b3a9737cSLeo Yan shmem = <&cpu_scp_scmi_mem &cpu_scp_scmi_mem>; 409*b3a9737cSLeo Yan #address-cells = <1>; 410*b3a9737cSLeo Yan #size-cells = <0>; 411*b3a9737cSLeo Yan 412*b3a9737cSLeo Yan#if TC_SCMI_PD_CTRL_EN 413*b3a9737cSLeo Yan scmi_devpd: protocol@11 { 414*b3a9737cSLeo Yan reg = <0x11>; 415*b3a9737cSLeo Yan #power-domain-cells = <1>; 416*b3a9737cSLeo Yan }; 417*b3a9737cSLeo Yan#endif /* TC_SCMI_PD_CTRL_EN */ 418*b3a9737cSLeo Yan 419*b3a9737cSLeo Yan scmi_dvfs: protocol@13 { 420*b3a9737cSLeo Yan reg = <0x13>; 421*b3a9737cSLeo Yan #clock-cells = <1>; 422*b3a9737cSLeo Yan }; 423*b3a9737cSLeo Yan 424*b3a9737cSLeo Yan scmi_clk: protocol@14 { 425*b3a9737cSLeo Yan reg = <0x14>; 426*b3a9737cSLeo Yan #clock-cells = <1>; 427*b3a9737cSLeo Yan }; 428*b3a9737cSLeo Yan }; 429*b3a9737cSLeo Yan 430*b3a9737cSLeo Yan gic: interrupt-controller@GIC_CTRL_ADDR { 431*b3a9737cSLeo Yan compatible = "arm,gic-v3"; 432*b3a9737cSLeo Yan #address-cells = <2>; 433*b3a9737cSLeo Yan #interrupt-cells = <3>; 434*b3a9737cSLeo Yan #size-cells = <2>; 435*b3a9737cSLeo Yan ranges; 436*b3a9737cSLeo Yan interrupt-controller; 437*b3a9737cSLeo Yan reg = <0x0 0x30000000 0 0x10000>, /* GICD */ 438*b3a9737cSLeo Yan <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */ 439*b3a9737cSLeo Yan interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW>; 440*b3a9737cSLeo Yan }; 441*b3a9737cSLeo Yan 442*b3a9737cSLeo Yan timer { 443*b3a9737cSLeo Yan compatible = "arm,armv8-timer"; 444*b3a9737cSLeo Yan interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 445*b3a9737cSLeo Yan <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 446*b3a9737cSLeo Yan <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 447*b3a9737cSLeo Yan <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 448*b3a9737cSLeo Yan }; 449*b3a9737cSLeo Yan 450*b3a9737cSLeo Yan soc_refclk: refclk { 451*b3a9737cSLeo Yan compatible = "fixed-clock"; 452*b3a9737cSLeo Yan #clock-cells = <0>; 453*b3a9737cSLeo Yan clock-frequency = <1000000000>; 454*b3a9737cSLeo Yan clock-output-names = "apb_pclk"; 455*b3a9737cSLeo Yan }; 456*b3a9737cSLeo Yan 457*b3a9737cSLeo Yan soc_refclk60mhz: refclk60mhz { 458*b3a9737cSLeo Yan compatible = "fixed-clock"; 459*b3a9737cSLeo Yan #clock-cells = <0>; 460*b3a9737cSLeo Yan clock-frequency = <60000000>; 461*b3a9737cSLeo Yan clock-output-names = "iofpga_clk"; 462*b3a9737cSLeo Yan }; 463*b3a9737cSLeo Yan 464*b3a9737cSLeo Yan soc_uartclk: uartclk { 465*b3a9737cSLeo Yan compatible = "fixed-clock"; 466*b3a9737cSLeo Yan #clock-cells = <0>; 467*b3a9737cSLeo Yan clock-frequency = <UARTCLK_FREQ>; 468*b3a9737cSLeo Yan clock-output-names = "uartclk"; 469*b3a9737cSLeo Yan }; 470*b3a9737cSLeo Yan 471*b3a9737cSLeo Yan /* soc_uart0 on FPGA, ap_ns_uart on FVP */ 472*b3a9737cSLeo Yan os_uart: serial@2a400000 { 473*b3a9737cSLeo Yan compatible = "arm,pl011", "arm,primecell"; 474*b3a9737cSLeo Yan reg = <0x0 0x2A400000 0x0 UART_OFFSET>; 475*b3a9737cSLeo Yan interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; 476*b3a9737cSLeo Yan clocks = <&soc_uartclk>, <&soc_refclk>; 477*b3a9737cSLeo Yan clock-names = "uartclk", "apb_pclk"; 478*b3a9737cSLeo Yan status = "okay"; 479*b3a9737cSLeo Yan }; 480*b3a9737cSLeo Yan 481*b3a9737cSLeo Yan vencoder { 482*b3a9737cSLeo Yan compatible = "drm,virtual-encoder"; 483*b3a9737cSLeo Yan port { 484*b3a9737cSLeo Yan vencoder_in: endpoint { 485*b3a9737cSLeo Yan remote-endpoint = <&dp_pl0_out0>; 486*b3a9737cSLeo Yan }; 487*b3a9737cSLeo Yan }; 488*b3a9737cSLeo Yan 489*b3a9737cSLeo Yan display-timings { 490*b3a9737cSLeo Yan timing-panel { 491*b3a9737cSLeo Yan VENCODER_TIMING; 492*b3a9737cSLeo Yan }; 493*b3a9737cSLeo Yan }; 494*b3a9737cSLeo Yan 495*b3a9737cSLeo Yan }; 496*b3a9737cSLeo Yan 497*b3a9737cSLeo Yan ethernet@18000000 { 498*b3a9737cSLeo Yan compatible = ETH_COMPATIBLE; 499*b3a9737cSLeo Yan reg = <0x0 0x18000000 0x0 0x10000>; 500*b3a9737cSLeo Yan interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; 501*b3a9737cSLeo Yan 502*b3a9737cSLeo Yan /* FPGA only but will work on FVP. Keep for simplicity */ 503*b3a9737cSLeo Yan phy-mode = "mii"; 504*b3a9737cSLeo Yan reg-io-width = <2>; 505*b3a9737cSLeo Yan smsc,irq-push-pull; 506*b3a9737cSLeo Yan }; 507*b3a9737cSLeo Yan 508*b3a9737cSLeo Yan bp_clock24mhz: clock24mhz { 509*b3a9737cSLeo Yan compatible = "fixed-clock"; 510*b3a9737cSLeo Yan #clock-cells = <0>; 511*b3a9737cSLeo Yan clock-frequency = <24000000>; 512*b3a9737cSLeo Yan clock-output-names = "bp:clock24mhz"; 513*b3a9737cSLeo Yan }; 514*b3a9737cSLeo Yan 515*b3a9737cSLeo Yan 516*b3a9737cSLeo Yan sysreg: sysreg@1c010000 { 517*b3a9737cSLeo Yan compatible = "arm,vexpress-sysreg"; 518*b3a9737cSLeo Yan reg = <0x0 0x001c010000 0x0 0x1000>; 519*b3a9737cSLeo Yan gpio-controller; 520*b3a9737cSLeo Yan #gpio-cells = <2>; 521*b3a9737cSLeo Yan }; 522*b3a9737cSLeo Yan 523*b3a9737cSLeo Yan fixed_3v3: v2m-3v3 { 524*b3a9737cSLeo Yan compatible = "regulator-fixed"; 525*b3a9737cSLeo Yan regulator-name = "3V3"; 526*b3a9737cSLeo Yan regulator-min-microvolt = <3300000>; 527*b3a9737cSLeo Yan regulator-max-microvolt = <3300000>; 528*b3a9737cSLeo Yan regulator-always-on; 529*b3a9737cSLeo Yan }; 530*b3a9737cSLeo Yan 531*b3a9737cSLeo Yan mmci@1c050000 { 532*b3a9737cSLeo Yan compatible = "arm,pl180", "arm,primecell"; 533*b3a9737cSLeo Yan reg = <0x0 0x001c050000 0x0 0x1000>; 534*b3a9737cSLeo Yan interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>, 535*b3a9737cSLeo Yan <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; 536*b3a9737cSLeo Yan MMC_REMOVABLE; 537*b3a9737cSLeo Yan wp-gpios = <&sysreg 1 0>; 538*b3a9737cSLeo Yan bus-width = <4>; 539*b3a9737cSLeo Yan max-frequency = <25000000>; 540*b3a9737cSLeo Yan vmmc-supply = <&fixed_3v3>; 541*b3a9737cSLeo Yan clocks = <&bp_clock24mhz>, <&bp_clock24mhz>; 542*b3a9737cSLeo Yan clock-names = "mclk", "apb_pclk"; 543*b3a9737cSLeo Yan }; 544*b3a9737cSLeo Yan 545*b3a9737cSLeo Yan gpu_clk: gpu_clk { 546*b3a9737cSLeo Yan compatible = "fixed-clock"; 547*b3a9737cSLeo Yan #clock-cells = <0>; 548*b3a9737cSLeo Yan clock-frequency = <1000000000>; 549*b3a9737cSLeo Yan }; 550*b3a9737cSLeo Yan 551*b3a9737cSLeo Yan gpu_core_clk: gpu_core_clk { 552*b3a9737cSLeo Yan compatible = "fixed-clock"; 553*b3a9737cSLeo Yan #clock-cells = <0>; 554*b3a9737cSLeo Yan clock-frequency = <1000000000>; 555*b3a9737cSLeo Yan }; 556*b3a9737cSLeo Yan 557*b3a9737cSLeo Yan gpu: gpu@2d000000 { 558*b3a9737cSLeo Yan compatible = "arm,mali-midgard"; 559*b3a9737cSLeo Yan reg = <0x0 0x2d000000 0x0 0x200000>; 560*b3a9737cSLeo Yan interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>, 561*b3a9737cSLeo Yan <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>, 562*b3a9737cSLeo Yan <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 563*b3a9737cSLeo Yan interrupt-names = "JOB", "MMU", "GPU"; 564*b3a9737cSLeo Yan clocks = <&gpu_core_clk>; 565*b3a9737cSLeo Yan clock-names = "shadercores"; 566*b3a9737cSLeo Yan#if TC_SCMI_PD_CTRL_EN 567*b3a9737cSLeo Yan power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>; 568*b3a9737cSLeo Yan scmi-perf-domain = <3>; 569*b3a9737cSLeo Yan#endif /* TC_SCMI_PD_CTRL_EN */ 570*b3a9737cSLeo Yan 571*b3a9737cSLeo Yan#if TC_IOMMU_EN 572*b3a9737cSLeo Yan iommus = <&smmu_700 0x200>; 573*b3a9737cSLeo Yan#endif /* TC_IOMMU_EN */ 574*b3a9737cSLeo Yan }; 575*b3a9737cSLeo Yan 576*b3a9737cSLeo Yan power_model_simple { 577*b3a9737cSLeo Yan /* 578*b3a9737cSLeo Yan * Numbers used are irrelevant to Titan, 579*b3a9737cSLeo Yan * it helps suppressing the kernel warnings. 580*b3a9737cSLeo Yan */ 581*b3a9737cSLeo Yan compatible = "arm,mali-simple-power-model"; 582*b3a9737cSLeo Yan static-coefficient = <2427750>; 583*b3a9737cSLeo Yan dynamic-coefficient = <4687>; 584*b3a9737cSLeo Yan ts = <20000 2000 (-20) 2>; 585*b3a9737cSLeo Yan thermal-zone = ""; 586*b3a9737cSLeo Yan }; 587*b3a9737cSLeo Yan 588*b3a9737cSLeo Yan#if TC_IOMMU_EN 589*b3a9737cSLeo Yan smmu_700: iommu@3f000000 { 590*b3a9737cSLeo Yan #iommu-cells = <1>; 591*b3a9737cSLeo Yan compatible = "arm,smmu-v3"; 592*b3a9737cSLeo Yan reg = <0x0 0x3f000000 0x0 0x5000000>; 593*b3a9737cSLeo Yan interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>, 594*b3a9737cSLeo Yan <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>, 595*b3a9737cSLeo Yan <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>; 596*b3a9737cSLeo Yan interrupt-names = "eventq", "cmdq-sync", "gerror"; 597*b3a9737cSLeo Yan dma-coherent; 598*b3a9737cSLeo Yan }; 599*b3a9737cSLeo Yan#endif /* TC_IOMMU_EN */ 600*b3a9737cSLeo Yan 601*b3a9737cSLeo Yan dp0: display@DPU_ADDR { 602*b3a9737cSLeo Yan #address-cells = <1>; 603*b3a9737cSLeo Yan #size-cells = <0>; 604*b3a9737cSLeo Yan compatible = "arm,mali-d71"; 605*b3a9737cSLeo Yan reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>; 606*b3a9737cSLeo Yan interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH>; 607*b3a9737cSLeo Yan interrupt-names = "DPU"; 608*b3a9737cSLeo Yan DPU_CLK_ATTR1; 609*b3a9737cSLeo Yan#if TC_IOMMU_EN 610*b3a9737cSLeo Yan iommus = <&smmu_700 0x100>; 611*b3a9737cSLeo Yan#endif /* TC_IOMMU_EN */ 612*b3a9737cSLeo Yan#if TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3) 613*b3a9737cSLeo Yan power-domains = <&scmi_devpd DPU_SCMI_PD_IDX>; 614*b3a9737cSLeo Yan#endif /* TC_SCMI_PD_CTRL_EN && (TARGET_PLATFORM != 3) */ 615*b3a9737cSLeo Yan 616*b3a9737cSLeo Yan pl0: pipeline@0 { 617*b3a9737cSLeo Yan reg = <0>; 618*b3a9737cSLeo Yan DPU_CLK_ATTR2; 619*b3a9737cSLeo Yan pl_id = <0>; 620*b3a9737cSLeo Yan ports { 621*b3a9737cSLeo Yan #address-cells = <1>; 622*b3a9737cSLeo Yan #size-cells = <0>; 623*b3a9737cSLeo Yan port@0 { 624*b3a9737cSLeo Yan reg = <0>; 625*b3a9737cSLeo Yan dp_pl0_out0: endpoint { 626*b3a9737cSLeo Yan remote-endpoint = <&vencoder_in>; 627*b3a9737cSLeo Yan }; 628*b3a9737cSLeo Yan }; 629*b3a9737cSLeo Yan }; 630*b3a9737cSLeo Yan }; 631*b3a9737cSLeo Yan 632*b3a9737cSLeo Yan pl1: pipeline@1 { 633*b3a9737cSLeo Yan reg = <1>; 634*b3a9737cSLeo Yan DPU_CLK_ATTR3; 635*b3a9737cSLeo Yan pl_id = <1>; 636*b3a9737cSLeo Yan ports { 637*b3a9737cSLeo Yan #address-cells = <1>; 638*b3a9737cSLeo Yan #size-cells = <0>; 639*b3a9737cSLeo Yan port@0 { 640*b3a9737cSLeo Yan reg = <0>; 641*b3a9737cSLeo Yan }; 642*b3a9737cSLeo Yan }; 643*b3a9737cSLeo Yan }; 644*b3a9737cSLeo Yan }; 645*b3a9737cSLeo Yan 646*b3a9737cSLeo Yan /* 647*b3a9737cSLeo Yan * L3 cache in the DSU is the Memory System Component (MSC) 648*b3a9737cSLeo Yan * The MPAM registers are accessed through utility bus in the DSU 649*b3a9737cSLeo Yan */ 650*b3a9737cSLeo Yan msc0 { 651*b3a9737cSLeo Yan compatible = "arm,mpam-msc"; 652*b3a9737cSLeo Yan reg = <MPAM_ADDR 0x0 0x2000>; 653*b3a9737cSLeo Yan }; 654*b3a9737cSLeo Yan 655*b3a9737cSLeo Yan ete0 { 656*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 657*b3a9737cSLeo Yan cpu = <&CPU0>; 658*b3a9737cSLeo Yan }; 659*b3a9737cSLeo Yan 660*b3a9737cSLeo Yan ete1 { 661*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 662*b3a9737cSLeo Yan cpu = <&CPU1>; 663*b3a9737cSLeo Yan }; 664*b3a9737cSLeo Yan 665*b3a9737cSLeo Yan ete2 { 666*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 667*b3a9737cSLeo Yan cpu = <&CPU2>; 668*b3a9737cSLeo Yan }; 669*b3a9737cSLeo Yan 670*b3a9737cSLeo Yan ete3 { 671*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 672*b3a9737cSLeo Yan cpu = <&CPU3>; 673*b3a9737cSLeo Yan }; 674*b3a9737cSLeo Yan 675*b3a9737cSLeo Yan ete4 { 676*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 677*b3a9737cSLeo Yan cpu = <&CPU4>; 678*b3a9737cSLeo Yan }; 679*b3a9737cSLeo Yan 680*b3a9737cSLeo Yan ete5 { 681*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 682*b3a9737cSLeo Yan cpu = <&CPU5>; 683*b3a9737cSLeo Yan }; 684*b3a9737cSLeo Yan 685*b3a9737cSLeo Yan ete6 { 686*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 687*b3a9737cSLeo Yan cpu = <&CPU6>; 688*b3a9737cSLeo Yan }; 689*b3a9737cSLeo Yan 690*b3a9737cSLeo Yan ete7 { 691*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 692*b3a9737cSLeo Yan cpu = <&CPU7>; 693*b3a9737cSLeo Yan }; 694*b3a9737cSLeo Yan 695*b3a9737cSLeo Yan#if TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 696*b3a9737cSLeo Yan ete8 { 697*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 698*b3a9737cSLeo Yan cpu = <&CPU8>; 699*b3a9737cSLeo Yan }; 700*b3a9737cSLeo Yan 701*b3a9737cSLeo Yan ete9 { 702*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 703*b3a9737cSLeo Yan cpu = <&CPU9>; 704*b3a9737cSLeo Yan }; 705*b3a9737cSLeo Yan 706*b3a9737cSLeo Yan ete10 { 707*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 708*b3a9737cSLeo Yan cpu = <&CPU10>; 709*b3a9737cSLeo Yan }; 710*b3a9737cSLeo Yan 711*b3a9737cSLeo Yan ete11 { 712*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 713*b3a9737cSLeo Yan cpu = <&CPU11>; 714*b3a9737cSLeo Yan }; 715*b3a9737cSLeo Yan 716*b3a9737cSLeo Yan ete12 { 717*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 718*b3a9737cSLeo Yan cpu = <&CPU12>; 719*b3a9737cSLeo Yan }; 720*b3a9737cSLeo Yan 721*b3a9737cSLeo Yan ete13 { 722*b3a9737cSLeo Yan compatible = "arm,embedded-trace-extension"; 723*b3a9737cSLeo Yan cpu = <&CPU13>; 724*b3a9737cSLeo Yan }; 725*b3a9737cSLeo Yan#endif /* TARGET_FLAVOUR_FPGA && TARGET_PLATFORM <= 2 */ 726*b3a9737cSLeo Yan 727*b3a9737cSLeo Yan trbe { 728*b3a9737cSLeo Yan compatible = "arm,trace-buffer-extension"; 729*b3a9737cSLeo Yan interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>; 730*b3a9737cSLeo Yan }; 731*b3a9737cSLeo Yan 732*b3a9737cSLeo Yan trusty { 733*b3a9737cSLeo Yan #size-cells = <0x02>; 734*b3a9737cSLeo Yan #address-cells = <0x02>; 735*b3a9737cSLeo Yan ranges = <0x00>; 736*b3a9737cSLeo Yan compatible = "android,trusty-v1"; 737*b3a9737cSLeo Yan 738*b3a9737cSLeo Yan virtio { 739*b3a9737cSLeo Yan compatible = "android,trusty-virtio-v1"; 740*b3a9737cSLeo Yan }; 741*b3a9737cSLeo Yan 742*b3a9737cSLeo Yan test { 743*b3a9737cSLeo Yan compatible = "android,trusty-test-v1"; 744*b3a9737cSLeo Yan }; 745*b3a9737cSLeo Yan 746*b3a9737cSLeo Yan log { 747*b3a9737cSLeo Yan compatible = "android,trusty-log-v1"; 748*b3a9737cSLeo Yan }; 749*b3a9737cSLeo Yan 750*b3a9737cSLeo Yan irq { 751*b3a9737cSLeo Yan ipi-range = <0x08 0x0f 0x08>; 752*b3a9737cSLeo Yan interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>; 753*b3a9737cSLeo Yan interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>; 754*b3a9737cSLeo Yan compatible = "android,trusty-irq-v1"; 755*b3a9737cSLeo Yan }; 756*b3a9737cSLeo Yan }; 757*b3a9737cSLeo Yan 758*b3a9737cSLeo Yan /* used in U-boot, Linux doesn't care */ 759*b3a9737cSLeo Yan arm_ffa { 760*b3a9737cSLeo Yan compatible = "arm,ffa"; 761*b3a9737cSLeo Yan method = "smc"; 762*b3a9737cSLeo Yan }; 763*b3a9737cSLeo Yan}; 764