xref: /arm-trusted-firmware/fdts/morello-fvp.dts (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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