xref: /rk3399_ARM-atf/fdts/fvp-base-psci-common.dtsi (revision 2e55a3d74d588780e04f1632c1b9d7ad33fb5f4f)
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