1*54fd6939SJiyong Park/* 2*54fd6939SJiyong Park * Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park 7*54fd6939SJiyong Park#include <dt-bindings/interrupt-controller/arm-gic.h> 8*54fd6939SJiyong Park#include <services/sdei_flags.h> 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park#define LEVEL 0 11*54fd6939SJiyong Park#define EDGE 2 12*54fd6939SJiyong Park#define SDEI_NORMAL 0x70 13*54fd6939SJiyong Park#define HIGHEST_SEC 0 14*54fd6939SJiyong Park 15*54fd6939SJiyong Park/memreserve/ 0x80000000 0x00010000; 16*54fd6939SJiyong Park 17*54fd6939SJiyong Park/ { 18*54fd6939SJiyong Park}; 19*54fd6939SJiyong Park 20*54fd6939SJiyong Park/ { 21*54fd6939SJiyong Park model = "FVP Base"; 22*54fd6939SJiyong Park compatible = "arm,vfp-base", "arm,vexpress"; 23*54fd6939SJiyong Park interrupt-parent = <&gic>; 24*54fd6939SJiyong Park #address-cells = <2>; 25*54fd6939SJiyong Park #size-cells = <2>; 26*54fd6939SJiyong Park 27*54fd6939SJiyong Park#if (ENABLE_RME == 1) 28*54fd6939SJiyong Park chosen { bootargs = "mem=1G console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on";}; 29*54fd6939SJiyong Park#else 30*54fd6939SJiyong Park chosen {}; 31*54fd6939SJiyong Park#endif 32*54fd6939SJiyong Park 33*54fd6939SJiyong Park aliases { 34*54fd6939SJiyong Park serial0 = &v2m_serial0; 35*54fd6939SJiyong Park serial1 = &v2m_serial1; 36*54fd6939SJiyong Park serial2 = &v2m_serial2; 37*54fd6939SJiyong Park serial3 = &v2m_serial3; 38*54fd6939SJiyong Park }; 39*54fd6939SJiyong Park 40*54fd6939SJiyong Park psci { 41*54fd6939SJiyong Park compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; 42*54fd6939SJiyong Park method = "smc"; 43*54fd6939SJiyong Park cpu_suspend = <0xc4000001>; 44*54fd6939SJiyong Park cpu_off = <0x84000002>; 45*54fd6939SJiyong Park cpu_on = <0xc4000003>; 46*54fd6939SJiyong Park sys_poweroff = <0x84000008>; 47*54fd6939SJiyong Park sys_reset = <0x84000009>; 48*54fd6939SJiyong Park max-pwr-lvl = <2>; 49*54fd6939SJiyong Park }; 50*54fd6939SJiyong Park 51*54fd6939SJiyong Park#if SDEI_IN_FCONF || SEC_INT_DESC_IN_FCONF 52*54fd6939SJiyong Park firmware { 53*54fd6939SJiyong Park#if SDEI_IN_FCONF 54*54fd6939SJiyong Park sdei { 55*54fd6939SJiyong Park compatible = "arm,sdei-1.0"; 56*54fd6939SJiyong Park method = "smc"; 57*54fd6939SJiyong Park private_event_count = <3>; 58*54fd6939SJiyong Park shared_event_count = <3>; 59*54fd6939SJiyong Park /* 60*54fd6939SJiyong Park * Each event descriptor has typically 3 fields: 61*54fd6939SJiyong Park * 1. Event number 62*54fd6939SJiyong Park * 2. Interrupt number the event is bound to or 63*54fd6939SJiyong Park * if event is dynamic, specified as SDEI_DYN_IRQ 64*54fd6939SJiyong Park * 3. Bit map of event flags 65*54fd6939SJiyong Park */ 66*54fd6939SJiyong Park private_events = <1000 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 67*54fd6939SJiyong Park <1001 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 68*54fd6939SJiyong Park <1002 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>; 69*54fd6939SJiyong Park shared_events = <2000 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 70*54fd6939SJiyong Park <2001 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>, 71*54fd6939SJiyong Park <2002 SDEI_DYN_IRQ SDEI_MAPF_DYNAMIC>; 72*54fd6939SJiyong Park }; 73*54fd6939SJiyong Park#endif /* SDEI_IN_FCONF */ 74*54fd6939SJiyong Park 75*54fd6939SJiyong Park#if SEC_INT_DESC_IN_FCONF 76*54fd6939SJiyong Park sec_interrupts { 77*54fd6939SJiyong Park compatible = "arm,secure_interrupt_desc"; 78*54fd6939SJiyong Park /* Number of G0 and G1 secure interrupts defined by the platform */ 79*54fd6939SJiyong Park g0_intr_cnt = <2>; 80*54fd6939SJiyong Park g1s_intr_cnt = <9>; 81*54fd6939SJiyong Park /* 82*54fd6939SJiyong Park * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 83*54fd6939SJiyong Park * terminology. Each interrupt property descriptor has 3 fields: 84*54fd6939SJiyong Park * 1. Interrupt number 85*54fd6939SJiyong Park * 2. Interrupt priority 86*54fd6939SJiyong Park * 3. Type of interrupt (Edge or Level configured) 87*54fd6939SJiyong Park */ 88*54fd6939SJiyong Park g0_intr_desc = < 8 SDEI_NORMAL EDGE>, 89*54fd6939SJiyong Park <14 HIGHEST_SEC EDGE>; 90*54fd6939SJiyong Park 91*54fd6939SJiyong Park g1s_intr_desc = < 9 HIGHEST_SEC EDGE>, 92*54fd6939SJiyong Park <10 HIGHEST_SEC EDGE>, 93*54fd6939SJiyong Park <11 HIGHEST_SEC EDGE>, 94*54fd6939SJiyong Park <12 HIGHEST_SEC EDGE>, 95*54fd6939SJiyong Park <13 HIGHEST_SEC EDGE>, 96*54fd6939SJiyong Park <15 HIGHEST_SEC EDGE>, 97*54fd6939SJiyong Park <29 HIGHEST_SEC LEVEL>, 98*54fd6939SJiyong Park <56 HIGHEST_SEC LEVEL>, 99*54fd6939SJiyong Park <57 HIGHEST_SEC LEVEL>; 100*54fd6939SJiyong Park }; 101*54fd6939SJiyong Park#endif /* SEC_INT_DESC_IN_FCONF */ 102*54fd6939SJiyong Park }; 103*54fd6939SJiyong Park#endif /* SDEI_IN_FCONF || SEC_INT_DESC_IN_FCONF */ 104*54fd6939SJiyong Park 105*54fd6939SJiyong Park cpus { 106*54fd6939SJiyong Park #address-cells = <2>; 107*54fd6939SJiyong Park #size-cells = <0>; 108*54fd6939SJiyong Park 109*54fd6939SJiyong Park CPU_MAP 110*54fd6939SJiyong Park 111*54fd6939SJiyong Park idle-states { 112*54fd6939SJiyong Park entry-method = "arm,psci"; 113*54fd6939SJiyong Park 114*54fd6939SJiyong Park CPU_SLEEP_0: cpu-sleep-0 { 115*54fd6939SJiyong Park compatible = "arm,idle-state"; 116*54fd6939SJiyong Park local-timer-stop; 117*54fd6939SJiyong Park arm,psci-suspend-param = <0x0010000>; 118*54fd6939SJiyong Park entry-latency-us = <40>; 119*54fd6939SJiyong Park exit-latency-us = <100>; 120*54fd6939SJiyong Park min-residency-us = <150>; 121*54fd6939SJiyong Park }; 122*54fd6939SJiyong Park 123*54fd6939SJiyong Park CLUSTER_SLEEP_0: cluster-sleep-0 { 124*54fd6939SJiyong Park compatible = "arm,idle-state"; 125*54fd6939SJiyong Park local-timer-stop; 126*54fd6939SJiyong Park arm,psci-suspend-param = <0x1010000>; 127*54fd6939SJiyong Park entry-latency-us = <500>; 128*54fd6939SJiyong Park exit-latency-us = <1000>; 129*54fd6939SJiyong Park min-residency-us = <2500>; 130*54fd6939SJiyong Park }; 131*54fd6939SJiyong Park }; 132*54fd6939SJiyong Park 133*54fd6939SJiyong Park CPUS 134*54fd6939SJiyong Park 135*54fd6939SJiyong Park L2_0: l2-cache0 { 136*54fd6939SJiyong Park compatible = "cache"; 137*54fd6939SJiyong Park }; 138*54fd6939SJiyong Park }; 139*54fd6939SJiyong Park 140*54fd6939SJiyong Park memory@80000000 { 141*54fd6939SJiyong Park device_type = "memory"; 142*54fd6939SJiyong Park#if (ENABLE_RME == 1) 143*54fd6939SJiyong Park reg = <0x00000000 0x80000000 0 0x7C000000>, 144*54fd6939SJiyong Park <0x00000008 0x80000000 0 0x80000000>; 145*54fd6939SJiyong Park#else 146*54fd6939SJiyong Park reg = <0x00000000 0x80000000 0 0x7F000000>, 147*54fd6939SJiyong Park <0x00000008 0x80000000 0 0x80000000>; 148*54fd6939SJiyong Park#endif 149*54fd6939SJiyong Park }; 150*54fd6939SJiyong Park 151*54fd6939SJiyong Park gic: interrupt-controller@2f000000 { 152*54fd6939SJiyong Park compatible = "arm,gic-v3"; 153*54fd6939SJiyong Park #interrupt-cells = <3>; 154*54fd6939SJiyong Park #address-cells = <2>; 155*54fd6939SJiyong Park #size-cells = <2>; 156*54fd6939SJiyong Park ranges; 157*54fd6939SJiyong Park interrupt-controller; 158*54fd6939SJiyong Park reg = <0x0 0x2f000000 0 0x10000>, // GICD 159*54fd6939SJiyong Park <0x0 0x2f100000 0 0x200000>, // GICR 160*54fd6939SJiyong Park <0x0 0x2c000000 0 0x2000>, // GICC 161*54fd6939SJiyong Park <0x0 0x2c010000 0 0x2000>, // GICH 162*54fd6939SJiyong Park <0x0 0x2c02f000 0 0x2000>; // GICV 163*54fd6939SJiyong Park interrupts = <1 9 4>; 164*54fd6939SJiyong Park 165*54fd6939SJiyong Park its: its@2f020000 { 166*54fd6939SJiyong Park compatible = "arm,gic-v3-its"; 167*54fd6939SJiyong Park msi-controller; 168*54fd6939SJiyong Park reg = <0x0 0x2f020000 0x0 0x20000>; // GITS 169*54fd6939SJiyong Park }; 170*54fd6939SJiyong Park }; 171*54fd6939SJiyong Park 172*54fd6939SJiyong Park timer { 173*54fd6939SJiyong Park compatible = "arm,armv8-timer"; 174*54fd6939SJiyong Park interrupts = <GIC_PPI 13 175*54fd6939SJiyong Park (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 176*54fd6939SJiyong Park <GIC_PPI 14 177*54fd6939SJiyong Park (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 178*54fd6939SJiyong Park <GIC_PPI 11 179*54fd6939SJiyong Park (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 180*54fd6939SJiyong Park <GIC_PPI 10 181*54fd6939SJiyong Park (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>; 182*54fd6939SJiyong Park clock-frequency = <100000000>; 183*54fd6939SJiyong Park }; 184*54fd6939SJiyong Park 185*54fd6939SJiyong Park timer@2a810000 { 186*54fd6939SJiyong Park compatible = "arm,armv7-timer-mem"; 187*54fd6939SJiyong Park reg = <0x0 0x2a810000 0x0 0x10000>; 188*54fd6939SJiyong Park clock-frequency = <100000000>; 189*54fd6939SJiyong Park #address-cells = <2>; 190*54fd6939SJiyong Park #size-cells = <2>; 191*54fd6939SJiyong Park ranges; 192*54fd6939SJiyong Park frame@2a830000 { 193*54fd6939SJiyong Park frame-number = <1>; 194*54fd6939SJiyong Park interrupts = <0 26 4>; 195*54fd6939SJiyong Park reg = <0x0 0x2a830000 0x0 0x10000>; 196*54fd6939SJiyong Park }; 197*54fd6939SJiyong Park }; 198*54fd6939SJiyong Park 199*54fd6939SJiyong Park pmu { 200*54fd6939SJiyong Park compatible = "arm,armv8-pmuv3"; 201*54fd6939SJiyong Park interrupts = <0 60 4>, 202*54fd6939SJiyong Park <0 61 4>, 203*54fd6939SJiyong Park <0 62 4>, 204*54fd6939SJiyong Park <0 63 4>; 205*54fd6939SJiyong Park }; 206*54fd6939SJiyong Park 207*54fd6939SJiyong Park smb@0,0 { 208*54fd6939SJiyong Park compatible = "simple-bus"; 209*54fd6939SJiyong Park 210*54fd6939SJiyong Park #address-cells = <2>; 211*54fd6939SJiyong Park #size-cells = <1>; 212*54fd6939SJiyong Park ranges = <0 0 0 0x08000000 0x04000000>, 213*54fd6939SJiyong Park <1 0 0 0x14000000 0x04000000>, 214*54fd6939SJiyong Park <2 0 0 0x18000000 0x04000000>, 215*54fd6939SJiyong Park <3 0 0 0x1c000000 0x04000000>, 216*54fd6939SJiyong Park <4 0 0 0x0c000000 0x04000000>, 217*54fd6939SJiyong Park <5 0 0 0x10000000 0x04000000>; 218*54fd6939SJiyong Park 219*54fd6939SJiyong Park #include "rtsm_ve-motherboard.dtsi" 220*54fd6939SJiyong Park }; 221*54fd6939SJiyong Park 222*54fd6939SJiyong Park panels { 223*54fd6939SJiyong Park panel { 224*54fd6939SJiyong Park compatible = "panel"; 225*54fd6939SJiyong Park mode = "XVGA"; 226*54fd6939SJiyong Park refresh = <60>; 227*54fd6939SJiyong Park xres = <1024>; 228*54fd6939SJiyong Park yres = <768>; 229*54fd6939SJiyong Park pixclock = <15748>; 230*54fd6939SJiyong Park left_margin = <152>; 231*54fd6939SJiyong Park right_margin = <48>; 232*54fd6939SJiyong Park upper_margin = <23>; 233*54fd6939SJiyong Park lower_margin = <3>; 234*54fd6939SJiyong Park hsync_len = <104>; 235*54fd6939SJiyong Park vsync_len = <4>; 236*54fd6939SJiyong Park sync = <0>; 237*54fd6939SJiyong Park vmode = "FB_VMODE_NONINTERLACED"; 238*54fd6939SJiyong Park tim2 = "TIM2_BCD", "TIM2_IPC"; 239*54fd6939SJiyong Park cntl = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)"; 240*54fd6939SJiyong Park caps = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888"; 241*54fd6939SJiyong Park bpp = <16>; 242*54fd6939SJiyong Park }; 243*54fd6939SJiyong Park }; 244*54fd6939SJiyong Park}; 245