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