1*91f16700Schasinglulu/* 2*91f16700Schasinglulu * Copyright (c) 2020-2023, Arm Limited. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu/dts-v1/; 8*91f16700Schasinglulu#include "morello.dtsi" 9*91f16700Schasinglulu 10*91f16700Schasinglulu/ { 11*91f16700Schasinglulu model = "Arm Morello Fixed Virtual Platform"; 12*91f16700Schasinglulu 13*91f16700Schasinglulu chosen { 14*91f16700Schasinglulu stdout-path = "serial0:115200n8"; 15*91f16700Schasinglulu }; 16*91f16700Schasinglulu 17*91f16700Schasinglulu reserved-memory { 18*91f16700Schasinglulu #address-cells = <2>; 19*91f16700Schasinglulu #size-cells = <2>; 20*91f16700Schasinglulu ranges; 21*91f16700Schasinglulu 22*91f16700Schasinglulu secure-firmware@ff000000 { 23*91f16700Schasinglulu reg = <0 0xff000000 0 0x01000000>; 24*91f16700Schasinglulu no-map; 25*91f16700Schasinglulu }; 26*91f16700Schasinglulu }; 27*91f16700Schasinglulu 28*91f16700Schasinglulu /* 29*91f16700Schasinglulu * The timings below are just to demonstrate working cpuidle. 30*91f16700Schasinglulu * These values may be inaccurate. 31*91f16700Schasinglulu */ 32*91f16700Schasinglulu idle-states { 33*91f16700Schasinglulu entry-method = "psci"; 34*91f16700Schasinglulu 35*91f16700Schasinglulu cluster_sleep: cluster-sleep { 36*91f16700Schasinglulu compatible = "arm,idle-state"; 37*91f16700Schasinglulu arm,psci-suspend-param = <0x40000022>; 38*91f16700Schasinglulu local-timer-stop; 39*91f16700Schasinglulu entry-latency-us = <500>; 40*91f16700Schasinglulu exit-latency-us = <1000>; 41*91f16700Schasinglulu min-residency-us = <2500>; 42*91f16700Schasinglulu }; 43*91f16700Schasinglulu 44*91f16700Schasinglulu cpu_sleep: cpu-sleep { 45*91f16700Schasinglulu compatible = "arm,idle-state"; 46*91f16700Schasinglulu arm,psci-suspend-param = <0x40000002>; 47*91f16700Schasinglulu local-timer-stop; 48*91f16700Schasinglulu entry-latency-us = <150>; 49*91f16700Schasinglulu exit-latency-us = <300>; 50*91f16700Schasinglulu min-residency-us = <200>; 51*91f16700Schasinglulu }; 52*91f16700Schasinglulu }; 53*91f16700Schasinglulu 54*91f16700Schasinglulu cpus { 55*91f16700Schasinglulu #address-cells = <2>; 56*91f16700Schasinglulu #size-cells = <0>; 57*91f16700Schasinglulu 58*91f16700Schasinglulu cpu-map { 59*91f16700Schasinglulu cluster0 { 60*91f16700Schasinglulu core0 { 61*91f16700Schasinglulu cpu = <&CPU0>; 62*91f16700Schasinglulu }; 63*91f16700Schasinglulu core1 { 64*91f16700Schasinglulu cpu = <&CPU1>; 65*91f16700Schasinglulu }; 66*91f16700Schasinglulu }; 67*91f16700Schasinglulu cluster1 { 68*91f16700Schasinglulu core0 { 69*91f16700Schasinglulu cpu = <&CPU2>; 70*91f16700Schasinglulu }; 71*91f16700Schasinglulu core1 { 72*91f16700Schasinglulu cpu = <&CPU3>; 73*91f16700Schasinglulu }; 74*91f16700Schasinglulu }; 75*91f16700Schasinglulu }; 76*91f16700Schasinglulu CPU0: cpu0@0 { 77*91f16700Schasinglulu compatible = "arm,armv8"; 78*91f16700Schasinglulu reg = <0x0 0x0>; 79*91f16700Schasinglulu device_type = "cpu"; 80*91f16700Schasinglulu enable-method = "psci"; 81*91f16700Schasinglulu clocks = <&scmi_dvfs 0>; 82*91f16700Schasinglulu cpu-idle-states = <&cpu_sleep &cluster_sleep>; 83*91f16700Schasinglulu }; 84*91f16700Schasinglulu CPU1: cpu1@100 { 85*91f16700Schasinglulu compatible = "arm,armv8"; 86*91f16700Schasinglulu reg = <0x0 0x100>; 87*91f16700Schasinglulu device_type = "cpu"; 88*91f16700Schasinglulu enable-method = "psci"; 89*91f16700Schasinglulu clocks = <&scmi_dvfs 0>; 90*91f16700Schasinglulu cpu-idle-states = <&cpu_sleep &cluster_sleep>; 91*91f16700Schasinglulu }; 92*91f16700Schasinglulu CPU2: cpu2@10000 { 93*91f16700Schasinglulu compatible = "arm,armv8"; 94*91f16700Schasinglulu reg = <0x0 0x10000>; 95*91f16700Schasinglulu device_type = "cpu"; 96*91f16700Schasinglulu enable-method = "psci"; 97*91f16700Schasinglulu clocks = <&scmi_dvfs 1>; 98*91f16700Schasinglulu cpu-idle-states = <&cpu_sleep &cluster_sleep>; 99*91f16700Schasinglulu }; 100*91f16700Schasinglulu CPU3: cpu3@10100 { 101*91f16700Schasinglulu compatible = "arm,armv8"; 102*91f16700Schasinglulu reg = <0x0 0x10100>; 103*91f16700Schasinglulu device_type = "cpu"; 104*91f16700Schasinglulu enable-method = "psci"; 105*91f16700Schasinglulu clocks = <&scmi_dvfs 1>; 106*91f16700Schasinglulu cpu-idle-states = <&cpu_sleep &cluster_sleep>; 107*91f16700Schasinglulu }; 108*91f16700Schasinglulu }; 109*91f16700Schasinglulu 110*91f16700Schasinglulu /* The first bank of memory, memory map is actually provided by UEFI. */ 111*91f16700Schasinglulu memory@80000000 { 112*91f16700Schasinglulu device_type = "memory"; 113*91f16700Schasinglulu /* [0x80000000-0xffffffff] */ 114*91f16700Schasinglulu reg = <0x00000000 0x80000000 0x0 0x80000000>; 115*91f16700Schasinglulu }; 116*91f16700Schasinglulu 117*91f16700Schasinglulu memory@8080000000 { 118*91f16700Schasinglulu device_type = "memory"; 119*91f16700Schasinglulu /* [0x8080000000-0x83ffffffff] */ 120*91f16700Schasinglulu reg = <0x00000080 0x80000000 0x1 0x80000000>; 121*91f16700Schasinglulu }; 122*91f16700Schasinglulu 123*91f16700Schasinglulu virtio_block@1c170000 { 124*91f16700Schasinglulu compatible = "virtio,mmio"; 125*91f16700Schasinglulu reg = <0x0 0x1c170000 0x0 0x200>; 126*91f16700Schasinglulu interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 127*91f16700Schasinglulu }; 128*91f16700Schasinglulu 129*91f16700Schasinglulu virtio_net@1c180000 { 130*91f16700Schasinglulu compatible = "virtio,mmio"; 131*91f16700Schasinglulu reg = <0x0 0x1c180000 0x0 0x200>; 132*91f16700Schasinglulu interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; 133*91f16700Schasinglulu }; 134*91f16700Schasinglulu 135*91f16700Schasinglulu virtio_rng@1c190000 { 136*91f16700Schasinglulu compatible = "virtio,mmio"; 137*91f16700Schasinglulu reg = <0x0 0x1c190000 0x0 0x200>; 138*91f16700Schasinglulu interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 139*91f16700Schasinglulu }; 140*91f16700Schasinglulu 141*91f16700Schasinglulu virtio_p9@1c1a0000 { 142*91f16700Schasinglulu compatible = "virtio,mmio"; 143*91f16700Schasinglulu reg = <0x0 0x1c1a0000 0x0 0x200>; 144*91f16700Schasinglulu interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 145*91f16700Schasinglulu }; 146*91f16700Schasinglulu 147*91f16700Schasinglulu ethernet@1d100000 { 148*91f16700Schasinglulu compatible = "smsc,lan91c111"; 149*91f16700Schasinglulu reg = <0x0 0x1d100000 0x0 0x10000>; 150*91f16700Schasinglulu interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 151*91f16700Schasinglulu }; 152*91f16700Schasinglulu 153*91f16700Schasinglulu kmi@1c150000 { 154*91f16700Schasinglulu compatible = "arm,pl050", "arm,primecell"; 155*91f16700Schasinglulu reg = <0x0 0x1c150000 0x0 0x1000>; 156*91f16700Schasinglulu interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; 157*91f16700Schasinglulu clocks = <&bp_clock24mhz>, <&bp_clock24mhz>; 158*91f16700Schasinglulu clock-names = "KMIREFCLK", "apb_pclk"; 159*91f16700Schasinglulu }; 160*91f16700Schasinglulu 161*91f16700Schasinglulu kmi@1c160000 { 162*91f16700Schasinglulu compatible = "arm,pl050", "arm,primecell"; 163*91f16700Schasinglulu reg = <0x0 0x1c160000 0x0 0x1000>; 164*91f16700Schasinglulu interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 165*91f16700Schasinglulu clocks = <&bp_clock24mhz>, <&bp_clock24mhz>; 166*91f16700Schasinglulu clock-names = "KMIREFCLK", "apb_pclk"; 167*91f16700Schasinglulu }; 168*91f16700Schasinglulu 169*91f16700Schasinglulu firmware { 170*91f16700Schasinglulu scmi { 171*91f16700Schasinglulu compatible = "arm,scmi"; 172*91f16700Schasinglulu mbox-names = "tx", "rx"; 173*91f16700Schasinglulu mboxes = <&mailbox 1 0>, <&mailbox 1 1>; 174*91f16700Schasinglulu shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>; 175*91f16700Schasinglulu #address-cells = <1>; 176*91f16700Schasinglulu #size-cells = <0>; 177*91f16700Schasinglulu 178*91f16700Schasinglulu scmi_dvfs: protocol@13 { 179*91f16700Schasinglulu reg = <0x13>; 180*91f16700Schasinglulu #clock-cells = <1>; 181*91f16700Schasinglulu }; 182*91f16700Schasinglulu }; 183*91f16700Schasinglulu }; 184*91f16700Schasinglulu 185*91f16700Schasinglulu bp_clock24mhz: clock24mhz { 186*91f16700Schasinglulu compatible = "fixed-clock"; 187*91f16700Schasinglulu #clock-cells = <0>; 188*91f16700Schasinglulu clock-frequency = <24000000>; 189*91f16700Schasinglulu clock-output-names = "bp:clock24mhz"; 190*91f16700Schasinglulu }; 191*91f16700Schasinglulu}; 192*91f16700Schasinglulu 193*91f16700Schasinglulu&gic { 194*91f16700Schasinglulu reg = <0x0 0x30000000 0 0x10000>, /* GICD */ 195*91f16700Schasinglulu <0x0 0x300c0000 0 0x80000>; /* GICR */ 196*91f16700Schasinglulu interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 197*91f16700Schasinglulu}; 198