12716bd33SAndre Przywara// SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause 2589aaba4SAndre Przywara/* 32716bd33SAndre Przywara * ARM Ltd. Fast Models 4589aaba4SAndre Przywara * 52716bd33SAndre Przywara * Architecture Envelope Model (AEM) ARMv8-A 62716bd33SAndre Przywara * ARMAEMv8AMPCT 72716bd33SAndre Przywara * 82716bd33SAndre Przywara * RTSM_VE_AEMv8A.lisa 92716bd33SAndre Przywara * 10bef44f60SAlexeiFedorov * Copyright (c) 2017-2025, ARM Limited and Contributors. All rights reserved. 11589aaba4SAndre Przywara */ 12589aaba4SAndre Przywara 13589aaba4SAndre Przywara#include <dt-bindings/interrupt-controller/arm-gic.h> 14589aaba4SAndre Przywara#include <services/sdei_flags.h> 15589aaba4SAndre Przywara 16589aaba4SAndre Przywara#define LEVEL 0 17589aaba4SAndre Przywara#define EDGE 2 18589aaba4SAndre Przywara#define SDEI_NORMAL 0x70 19589aaba4SAndre Przywara#define HIGHEST_SEC 0 20589aaba4SAndre Przywara 212716bd33SAndre Przywara#include "rtsm_ve-motherboard.dtsi" 222716bd33SAndre Przywara 23589aaba4SAndre Przywara/ { 24589aaba4SAndre Przywara model = "FVP Base"; 25589aaba4SAndre Przywara compatible = "arm,fvp-base", "arm,vexpress"; 26589aaba4SAndre Przywara interrupt-parent = <&gic>; 27589aaba4SAndre Przywara #address-cells = <2>; 28589aaba4SAndre Przywara #size-cells = <2>; 29589aaba4SAndre Przywara 308c30a0c7SDebbie Martin chosen { 318c30a0c7SDebbie Martin stdout-path = "serial0:115200n8"; 32589aaba4SAndre Przywara#if (ENABLE_RME == 1) 338c30a0c7SDebbie Martin bootargs = "console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on"; 34589aaba4SAndre Przywara#endif 358c30a0c7SDebbie Martin }; 36589aaba4SAndre Przywara 37589aaba4SAndre Przywara aliases { 38589aaba4SAndre Przywara serial0 = &v2m_serial0; 39589aaba4SAndre Przywara serial1 = &v2m_serial1; 40589aaba4SAndre Przywara serial2 = &v2m_serial2; 41589aaba4SAndre Przywara serial3 = &v2m_serial3; 42589aaba4SAndre Przywara }; 43589aaba4SAndre Przywara 44589aaba4SAndre Przywara psci { 45589aaba4SAndre Przywara compatible = "arm,psci-1.0", "arm,psci-0.2"; 46589aaba4SAndre Przywara method = "smc"; 47589aaba4SAndre Przywara max-pwr-lvl = <2>; 48589aaba4SAndre Przywara }; 49589aaba4SAndre Przywara 50589aaba4SAndre Przywara#if SDEI_IN_FCONF || SEC_INT_DESC_IN_FCONF 51589aaba4SAndre Przywara firmware { 52589aaba4SAndre Przywara#if SDEI_IN_FCONF 53589aaba4SAndre Przywara sdei { 54589aaba4SAndre Przywara compatible = "arm,sdei-1.0"; 55589aaba4SAndre Przywara method = "smc"; 56589aaba4SAndre Przywara private_event_count = <3>; 57589aaba4SAndre Przywara shared_event_count = <3>; 58589aaba4SAndre Przywara /* 59589aaba4SAndre Przywara * Each event descriptor has typically 3 fields: 60589aaba4SAndre Przywara * 1. Event number 61589aaba4SAndre Przywara * 2. Interrupt number the event is bound to or 62589aaba4SAndre Przywara * if event is dynamic, specified as SDEI_DYN_IRQ 63589aaba4SAndre Przywara * 3. Bit map of event flags 64589aaba4SAndre Przywara */ 65589aaba4SAndre Przywara private_events = <1000 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 66589aaba4SAndre Przywara <1001 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 67589aaba4SAndre Przywara <1002 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>; 68589aaba4SAndre Przywara shared_events = <2000 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 69589aaba4SAndre Przywara <2001 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 70589aaba4SAndre Przywara <2002 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>; 71589aaba4SAndre Przywara }; 72589aaba4SAndre Przywara#endif /* SDEI_IN_FCONF */ 73589aaba4SAndre Przywara 74589aaba4SAndre Przywara#if SEC_INT_DESC_IN_FCONF 75589aaba4SAndre Przywara sec_interrupts { 76589aaba4SAndre Przywara compatible = "arm,secure_interrupt_desc"; 77589aaba4SAndre Przywara /* Number of G0 and G1 secure interrupts defined by the platform */ 78589aaba4SAndre Przywara g0_intr_cnt = <2>; 79589aaba4SAndre Przywara g1s_intr_cnt = <9>; 80589aaba4SAndre Przywara /* 81589aaba4SAndre Przywara * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 82589aaba4SAndre Przywara * terminology. Each interrupt property descriptor has 3 fields: 83589aaba4SAndre Przywara * 1. Interrupt number 84589aaba4SAndre Przywara * 2. Interrupt priority 85589aaba4SAndre Przywara * 3. Type of interrupt (Edge or Level configured) 86589aaba4SAndre Przywara */ 87589aaba4SAndre Przywara g0_intr_desc = < 8 SDEI_NORMAL EDGE>, 88589aaba4SAndre Przywara <14 HIGHEST_SEC EDGE>; 89589aaba4SAndre Przywara 90589aaba4SAndre Przywara g1s_intr_desc = < 9 HIGHEST_SEC EDGE>, 91589aaba4SAndre Przywara <10 HIGHEST_SEC EDGE>, 92589aaba4SAndre Przywara <11 HIGHEST_SEC EDGE>, 93589aaba4SAndre Przywara <12 HIGHEST_SEC EDGE>, 94589aaba4SAndre Przywara <13 HIGHEST_SEC EDGE>, 95589aaba4SAndre Przywara <15 HIGHEST_SEC EDGE>, 96589aaba4SAndre Przywara <29 HIGHEST_SEC LEVEL>, 97589aaba4SAndre Przywara <56 HIGHEST_SEC LEVEL>, 98589aaba4SAndre Przywara <57 HIGHEST_SEC LEVEL>; 99589aaba4SAndre Przywara }; 100589aaba4SAndre Przywara#endif /* SEC_INT_DESC_IN_FCONF */ 101589aaba4SAndre Przywara }; 102589aaba4SAndre Przywara#endif /* SDEI_IN_FCONF || SEC_INT_DESC_IN_FCONF */ 103589aaba4SAndre Przywara 104589aaba4SAndre Przywara cpus { 105589aaba4SAndre Przywara #address-cells = <2>; 106589aaba4SAndre Przywara #size-cells = <0>; 107589aaba4SAndre Przywara 108589aaba4SAndre Przywara CPU_MAP 109589aaba4SAndre Przywara 110589aaba4SAndre Przywara idle-states { 1110e3d8807SAndre Przywara entry-method = "psci"; 112589aaba4SAndre Przywara 113589aaba4SAndre Przywara CPU_SLEEP_0: cpu-sleep-0 { 114589aaba4SAndre Przywara compatible = "arm,idle-state"; 115589aaba4SAndre Przywara local-timer-stop; 116589aaba4SAndre Przywara arm,psci-suspend-param = <0x0010000>; 117589aaba4SAndre Przywara entry-latency-us = <40>; 118589aaba4SAndre Przywara exit-latency-us = <100>; 119589aaba4SAndre Przywara min-residency-us = <150>; 120589aaba4SAndre Przywara }; 121589aaba4SAndre Przywara 122589aaba4SAndre Przywara CLUSTER_SLEEP_0: cluster-sleep-0 { 123589aaba4SAndre Przywara compatible = "arm,idle-state"; 124589aaba4SAndre Przywara local-timer-stop; 125589aaba4SAndre Przywara arm,psci-suspend-param = <0x1010000>; 126589aaba4SAndre Przywara entry-latency-us = <500>; 127589aaba4SAndre Przywara exit-latency-us = <1000>; 128589aaba4SAndre Przywara min-residency-us = <2500>; 129589aaba4SAndre Przywara }; 130589aaba4SAndre Przywara }; 131589aaba4SAndre Przywara 132589aaba4SAndre Przywara CPUS 133589aaba4SAndre Przywara 134589aaba4SAndre Przywara L2_0: l2-cache0 { 135589aaba4SAndre Przywara compatible = "cache"; 136589aaba4SAndre Przywara }; 137589aaba4SAndre Przywara }; 138589aaba4SAndre Przywara 139589aaba4SAndre Przywara memory@80000000 { 140589aaba4SAndre Przywara device_type = "memory"; 141589aaba4SAndre Przywara#if (ENABLE_RME == 1) 142589aaba4SAndre Przywara reg = <0x00000000 0x80000000 0 0x7C000000>, 143589aaba4SAndre Przywara <0x00000008 0x80000000 0 0x80000000>; 144589aaba4SAndre Przywara#else 145589aaba4SAndre Przywara reg = <0x00000000 0x80000000 0 0x7F000000>, 146589aaba4SAndre Przywara <0x00000008 0x80000000 0 0x80000000>; 147589aaba4SAndre Przywara#endif 148589aaba4SAndre Przywara }; 149589aaba4SAndre Przywara 1502716bd33SAndre Przywara reserved-memory { 1512716bd33SAndre Przywara #address-cells = <2>; 1522716bd33SAndre Przywara #size-cells = <2>; 1532716bd33SAndre Przywara ranges; 1542716bd33SAndre Przywara 1552716bd33SAndre Przywara /* Chipselect 2,00000000 is physically at 0x18000000 */ 1562716bd33SAndre Przywara vram: vram@18000000 { 1572716bd33SAndre Przywara /* 8 MB of designated video RAM */ 1582716bd33SAndre Przywara compatible = "shared-dma-pool"; 1592716bd33SAndre Przywara reg = <0x00000000 0x18000000 0 0x00800000>; 1602716bd33SAndre Przywara no-map; 1612716bd33SAndre Przywara }; 1622716bd33SAndre Przywara }; 1632716bd33SAndre Przywara 164589aaba4SAndre Przywara timer { 165589aaba4SAndre Przywara compatible = "arm,armv8-timer"; 1662716bd33SAndre Przywara interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 1672716bd33SAndre Przywara <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 1682716bd33SAndre Przywara <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 1692716bd33SAndre Przywara <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>; 170589aaba4SAndre Przywara clock-frequency = <100000000>; 171589aaba4SAndre Przywara }; 172589aaba4SAndre Przywara 173589aaba4SAndre Przywara timer@2a810000 { 174589aaba4SAndre Przywara compatible = "arm,armv7-timer-mem"; 175589aaba4SAndre Przywara reg = <0x0 0x2a810000 0x0 0x10000>; 176589aaba4SAndre Przywara clock-frequency = <100000000>; 1773fd12bb8SAndre Przywara #address-cells = <1>; 1783fd12bb8SAndre Przywara #size-cells = <1>; 1793fd12bb8SAndre Przywara ranges = <0x0 0x0 0x2a810000 0x100000>; 1803fd12bb8SAndre Przywara 181589aaba4SAndre Przywara frame@2a830000 { 182589aaba4SAndre Przywara frame-number = <1>; 1833fd12bb8SAndre Przywara interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 1843fd12bb8SAndre Przywara reg = <0x20000 0x10000>; 185589aaba4SAndre Przywara }; 186589aaba4SAndre Przywara }; 187589aaba4SAndre Przywara 188589aaba4SAndre Przywara pmu { 189589aaba4SAndre Przywara compatible = "arm,armv8-pmuv3"; 190d7c455d8SAlexeiFedorov interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; 191589aaba4SAndre Przywara }; 192589aaba4SAndre Przywara 1932716bd33SAndre Przywara panel { 1942716bd33SAndre Przywara compatible = "arm,rtsm-display"; 1952716bd33SAndre Przywara port { 1962716bd33SAndre Przywara panel_in: endpoint { 1972716bd33SAndre Przywara remote-endpoint = <&clcd_pads>; 1982716bd33SAndre Przywara }; 1992716bd33SAndre Przywara }; 2002716bd33SAndre Przywara }; 201589aaba4SAndre Przywara 2022716bd33SAndre Przywara bus@8000000 { 203589aaba4SAndre Przywara #interrupt-cells = <1>; 204589aaba4SAndre Przywara interrupt-map-mask = <0 0 63>; 205589aaba4SAndre Przywara interrupt-map = <0 0 0 &gic 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, 206589aaba4SAndre Przywara <0 0 1 &gic 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, 207589aaba4SAndre Przywara <0 0 2 &gic 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, 208589aaba4SAndre Przywara <0 0 3 &gic 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>, 209589aaba4SAndre Przywara <0 0 4 &gic 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, 210589aaba4SAndre Przywara <0 0 5 &gic 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, 211589aaba4SAndre Przywara <0 0 6 &gic 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, 212589aaba4SAndre Przywara <0 0 7 &gic 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 213589aaba4SAndre Przywara <0 0 8 &gic 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 214589aaba4SAndre Przywara <0 0 9 &gic 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, 215589aaba4SAndre Przywara <0 0 10 &gic 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, 216589aaba4SAndre Przywara <0 0 11 &gic 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 217589aaba4SAndre Przywara <0 0 12 &gic 0 GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, 218589aaba4SAndre Przywara <0 0 13 &gic 0 GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, 219589aaba4SAndre Przywara <0 0 14 &gic 0 GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, 220589aaba4SAndre Przywara <0 0 15 &gic 0 GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 221589aaba4SAndre Przywara <0 0 16 &gic 0 GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, 222589aaba4SAndre Przywara <0 0 17 &gic 0 GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>, 223589aaba4SAndre Przywara <0 0 18 &gic 0 GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 224589aaba4SAndre Przywara <0 0 19 &gic 0 GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 225589aaba4SAndre Przywara <0 0 20 &gic 0 GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>, 226589aaba4SAndre Przywara <0 0 21 &gic 0 GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>, 227589aaba4SAndre Przywara <0 0 22 &gic 0 GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>, 228589aaba4SAndre Przywara <0 0 23 &gic 0 GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>, 229589aaba4SAndre Przywara <0 0 24 &gic 0 GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>, 230589aaba4SAndre Przywara <0 0 25 &gic 0 GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>, 231589aaba4SAndre Przywara <0 0 26 &gic 0 GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>, 232589aaba4SAndre Przywara <0 0 27 &gic 0 GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>, 233589aaba4SAndre Przywara <0 0 28 &gic 0 GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>, 234589aaba4SAndre Przywara <0 0 29 &gic 0 GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>, 235589aaba4SAndre Przywara <0 0 30 &gic 0 GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>, 236589aaba4SAndre Przywara <0 0 31 &gic 0 GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>, 237589aaba4SAndre Przywara <0 0 32 &gic 0 GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, 238589aaba4SAndre Przywara <0 0 33 &gic 0 GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>, 239589aaba4SAndre Przywara <0 0 34 &gic 0 GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>, 240589aaba4SAndre Przywara <0 0 35 &gic 0 GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>, 241589aaba4SAndre Przywara <0 0 36 &gic 0 GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, 242589aaba4SAndre Przywara <0 0 37 &gic 0 GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>, 243589aaba4SAndre Przywara <0 0 38 &gic 0 GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>, 244589aaba4SAndre Przywara <0 0 39 &gic 0 GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>, 245589aaba4SAndre Przywara <0 0 40 &gic 0 GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 246589aaba4SAndre Przywara <0 0 41 &gic 0 GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>, 24751b8b9c3SDebbie Martin <0 0 42 &gic 0 GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>, 24851b8b9c3SDebbie Martin <0 0 43 &gic 0 GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>, 24951b8b9c3SDebbie Martin <0 0 44 &gic 0 GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>, 25051b8b9c3SDebbie Martin <0 0 46 &gic 0 GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 251589aaba4SAndre Przywara }; 252bef44f60SAlexeiFedorov 253bef44f60SAlexeiFedorov#if (ENABLE_RME == 1) 254bef44f60SAlexeiFedorov pci: pci@40000000 { 255bef44f60SAlexeiFedorov #address-cells = <3>; 256bef44f60SAlexeiFedorov #size-cells = <2>; 257bef44f60SAlexeiFedorov #interrupt-cells = <1>; 258bef44f60SAlexeiFedorov compatible = "pci-host-ecam-generic"; 259bef44f60SAlexeiFedorov device_type = "pci"; 260bef44f60SAlexeiFedorov reg = <0x0 0x40000000 0x0 0x10000000>; 261bef44f60SAlexeiFedorov ranges = <0x2000000 0x0 0x50000000 0x0 0x50000000 0x0 0x10000000>, 262*2e55a3d7SAlexeiFedorov /* First 3GB of 256GB PCIe memory region 2 */ 263*2e55a3d7SAlexeiFedorov <0x2000000 0x40 0x00000000 0x40 0x00000000 0x0 0xc0000000>; 264bef44f60SAlexeiFedorov interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, 265bef44f60SAlexeiFedorov <0 0 0 2 &gic 0 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>, 266bef44f60SAlexeiFedorov <0 0 0 3 &gic 0 0 GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>, 267bef44f60SAlexeiFedorov <0 0 0 4 &gic 0 0 GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>; 268bef44f60SAlexeiFedorov interrupt-map-mask = <0x0 0x0 0x0 0x7>; 269bef44f60SAlexeiFedorov msi-map = <0x0 &its 0x0 0x10000>; 270bef44f60SAlexeiFedorov iommu-map = <0x0 &smmu 0x0 0x10000>; 271bef44f60SAlexeiFedorov dma-coherent; 272bef44f60SAlexeiFedorov }; 273bef44f60SAlexeiFedorov 274bef44f60SAlexeiFedorov smmu: iommu@2b400000 { 275bef44f60SAlexeiFedorov compatible = "arm,smmu-v3"; 276bef44f60SAlexeiFedorov reg = <0x0 0x2b400000 0x0 0x100000>; 277bef44f60SAlexeiFedorov interrupts = <GIC_SPI 74 IRQ_TYPE_EDGE_RISING>, 278bef44f60SAlexeiFedorov <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>, 279bef44f60SAlexeiFedorov <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>, 280bef44f60SAlexeiFedorov <GIC_SPI 77 IRQ_TYPE_EDGE_RISING>; 281bef44f60SAlexeiFedorov interrupt-names = "eventq", "gerror", "priq", "cmdq-sync"; 282bef44f60SAlexeiFedorov dma-coherent; 283bef44f60SAlexeiFedorov #iommu-cells = <1>; 284bef44f60SAlexeiFedorov msi-parent = <&its 0x10000>; 285bef44f60SAlexeiFedorov }; 286bef44f60SAlexeiFedorov#endif /* ENABLE_RME */ 287589aaba4SAndre Przywara}; 288