xref: /rk3399_ARM-atf/fdts/morello-soc.dts (revision ffdf5ea47a5ffede59f6fc7bf32775598dcd75a0)
1/*
2 * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7/dts-v1/;
8#include "morello.dtsi"
9#include "morello-coresight.dtsi"
10
11/ {
12	model = "Arm Morello System Development Platform";
13
14	chosen {
15		stdout-path = "serial0:115200n8";
16	};
17
18	reserved-memory {
19		#address-cells = <2>;
20		#size-cells = <2>;
21		ranges;
22
23		secure-firmware@ff000000 {
24			reg = <0 0xff000000 0 0x01000000>;
25			no-map;
26		};
27	};
28
29	cpus {
30		#address-cells = <2>;
31		#size-cells = <0>;
32		cpu0: cpu0@0 {
33			compatible = "arm,armv8";
34			reg = <0x0 0x0>;
35			device_type = "cpu";
36			enable-method = "psci";
37			clocks = <&scmi_dvfs 0>;
38		};
39		cpu1: cpu1@100 {
40			compatible = "arm,armv8";
41			reg = <0x0 0x100>;
42			device_type = "cpu";
43			enable-method = "psci";
44			clocks = <&scmi_dvfs 0>;
45		};
46		cpu2: cpu2@10000 {
47			compatible = "arm,armv8";
48			reg = <0x0 0x10000>;
49			device_type = "cpu";
50			enable-method = "psci";
51			clocks = <&scmi_dvfs 1>;
52		};
53		cpu3: cpu3@10100 {
54			compatible = "arm,armv8";
55			reg = <0x0 0x10100>;
56			device_type = "cpu";
57			enable-method = "psci";
58			clocks = <&scmi_dvfs 1>;
59		};
60	};
61
62	/* The first bank of memory, memory map is actually provided by UEFI. */
63	memory@80000000 {
64		device_type = "memory";
65		/* [0x80000000-0xffffffff] */
66		reg = <0x00000000 0x80000000 0x0 0x7F000000>;
67	};
68
69	memory@8080000000 {
70		device_type = "memory";
71		/* [0x8080000000-0x83f7ffffff] */
72		reg = <0x00000080 0x80000000 0x3 0x78000000>;
73	};
74
75	smmu_pcie: iommu@4f400000 {
76		compatible = "arm,smmu-v3";
77		reg = <0 0x4f400000 0 0x40000>;
78		interrupts = <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
79				<GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
80				<GIC_SPI 40 IRQ_TYPE_EDGE_RISING>,
81				<GIC_SPI 236 IRQ_TYPE_EDGE_RISING>;
82		interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
83		msi-parent = <&its2 0>;
84		#iommu-cells = <1>;
85		dma-coherent;
86	};
87
88	pcie_ctlr: pcie@28c0000000 {
89		compatible = "pci-host-ecam-generic";
90		device_type = "pci";
91		reg = <0x28 0xC0000000 0 0x10000000>;
92		bus-range = <0 255>;
93		linux,pci-domain = <0>;
94		#address-cells = <3>;
95		#size-cells = <2>;
96		dma-coherent;
97		ranges = <0x01000000 0x00 0x00000000 0x00 0x6F000000 0x00 0x00800000>,
98		     <0x02000000 0x00 0x60000000 0x00 0x60000000 0x00 0x0F000000>,
99			 <0x42000000 0x09 0x00000000 0x09 0x00000000 0x1F 0xC0000000>;
100		#interrupt-cells = <1>;
101		interrupt-map-mask = <0 0 0 7>;
102		interrupt-map = <0 0 0 1 &gic 0 0 0 169 IRQ_TYPE_LEVEL_HIGH>,
103			<0 0 0 2 &gic 0 0 0 170 IRQ_TYPE_LEVEL_HIGH>,
104			<0 0 0 3 &gic 0 0 0 171 IRQ_TYPE_LEVEL_HIGH>,
105			<0 0 0 4 &gic 0 0 0 172 IRQ_TYPE_LEVEL_HIGH>;
106		msi-map = <0 &its_pcie 0 0x10000>;
107		iommu-map = <0 &smmu_pcie 0 0x10000>;
108		status = "okay";
109	};
110
111	smmu_ccix: iommu@4f000000 {
112		compatible = "arm,smmu-v3";
113		reg = <0 0x4f000000 0 0x40000>;
114		interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
115				<GIC_SPI 230 IRQ_TYPE_EDGE_RISING>,
116				<GIC_SPI 41 IRQ_TYPE_EDGE_RISING>,
117				<GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
118		interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
119		msi-parent = <&its1 0>;
120		#iommu-cells = <1>;
121		dma-coherent;
122	};
123
124	ccix_pcie_ctlr: pcie@4fc0000000 {
125		compatible = "pci-host-ecam-generic";
126		device_type = "pci";
127		reg = <0x4F 0xC0000000 0 0x10000000>;
128		bus-range = <0 255>;
129		linux,pci-domain = <1>;
130		#address-cells = <3>;
131		#size-cells = <2>;
132		dma-coherent;
133		ranges = <0x01000000 0x00 0x00000000 0x00 0x7F000000 0x00 0x00800000>,
134		     <0x02000000 0x00 0x70000000 0x00 0x70000000 0x00 0x0F000000>,
135			 <0x42000000 0x30 0x00000000 0x30 0x00000000 0x1F 0xC0000000>;
136		#interrupt-cells = <1>;
137		interrupt-map-mask = <0 0 0 7>;
138		interrupt-map = <0 0 0 1 &gic 0 0 0 201 IRQ_TYPE_LEVEL_HIGH>,
139			<0 0 0 2 &gic 0 0 0 202 IRQ_TYPE_LEVEL_HIGH>,
140			<0 0 0 3 &gic 0 0 0 203 IRQ_TYPE_LEVEL_HIGH>,
141			<0 0 0 4 &gic 0 0 0 204 IRQ_TYPE_LEVEL_HIGH>;
142		msi-map = <0 &its_ccix 0 0x10000>;
143		iommu-map = <0 &smmu_ccix 0 0x10000>;
144		status = "okay";
145	};
146
147	smmu_dp: iommu@2ce00000 {
148		compatible = "arm,smmu-v3";
149		reg = <0 0x2ce00000 0 0x40000>;
150		interrupts = <GIC_SPI 76 IRQ_TYPE_EDGE_RISING>,
151				<GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
152				<GIC_SPI 78 IRQ_TYPE_EDGE_RISING>;
153		interrupt-names = "eventq", "gerror", "cmdq-sync";
154		#iommu-cells = <1>;
155	};
156
157	dp0: display@2cc00000 {
158		#address-cells = <1>;
159		#size-cells = <0>;
160		compatible = "arm,mali-d32", "arm,mali-d71";
161		reg = <0 0x2cc00000 0 0x20000>;
162		interrupts = <0 69 4>;
163		interrupt-names = "DPU";
164		clocks = <&dpu_aclk>;
165		clock-names = "aclk";
166		iommus = <&smmu_dp 0>, <&smmu_dp 1>, <&smmu_dp 2>, <&smmu_dp 3>,
167			<&smmu_dp 8>;
168
169		pl0: pipeline@0 {
170			reg = <0>;
171			clocks = <&scmi_clk 1>;
172			clock-names = "pxclk";
173			pl_id = <0>;
174			ports {
175				#address-cells = <1>;
176				#size-cells = <0>;
177				port@0 {
178					reg = <0>;
179					dp_pl0_out0: endpoint {
180						remote-endpoint = <&tda998x_0_input>;
181					};
182				};
183			};
184		};
185	};
186
187	i2c@1c0f0000 {
188		compatible = "cdns,i2c-r1p14";
189		reg = <0x0 0x1c0f0000 0x0 0x1000>;
190		#address-cells = <1>;
191		#size-cells = <0>;
192		clock-frequency = <100000>;
193		i2c-sda-hold-time-ns = <500>;
194		interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
195		clocks = <&dpu_aclk>;
196
197		hdmi_tx: hdmi-transmitter@70 {
198			compatible = "nxp,tda998x";
199			reg = <0x70>;
200			video-ports = <0x234501>;
201			#sound-dai-cells = <0>;
202			audio-ports = <2 0x03>;
203			port {
204				tda998x_0_input: endpoint {
205					remote-endpoint = <&dp_pl0_out0>;
206				};
207			};
208		};
209	};
210
211	dpu_aclk: dpu_aclk {
212		/* 77.1 MHz derived from 24 MHz reference clock */
213		compatible = "fixed-clock";
214		#clock-cells = <0>;
215		clock-frequency = <350000000>;
216		clock-output-names = "aclk";
217	};
218
219	gpu@2d000000 {
220		compatible = "arm,mali-bifrost";
221		reg = <0x0 0x2d000000 0x0 0x4000>;
222		interrupts =
223			<GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
224			<GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
225			<GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
226		interrupt-names =
227			"gpu",
228			"job",
229			"mmu";
230		clocks = <&clk_gpu>;
231		clock-names = "clk_mali";
232		status = "okay";
233	};
234
235	clk_gpu: clk_gpu {
236		compatible = "fixed-clock";
237		#clock-cells = <0>;
238		clock-frequency = <650000000>;
239		clock-output-names = "clk_mali";
240	};
241
242	firmware {
243		scmi {
244			compatible = "arm,scmi";
245			mbox-names = "tx", "rx";
246			mboxes = <&mailbox 1 0>, <&mailbox 1 1>;
247			shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>;
248			#address-cells = <1>;
249			#size-cells = <0>;
250			scmi_dvfs: protocol@13 {
251				reg = <0x13>;
252				#clock-cells = <1>;
253			};
254			scmi_clk: protocol@14 {
255				reg = <0x14>;
256				#clock-cells = <1>;
257			};
258		};
259	};
260
261	iofpga_i2s: xlnx-i2s@1c150000 {
262		#sound-dai-cells = <0>;
263		compatible = "xlnx,i2s-transmitter-1.0";
264		#address-cells = <1>;
265		#size-cells = <0>;
266		reg = <0x0 0x1c150000 0x0 0x10000>;
267		xlnx,dwidth = <0x18>;
268		xlnx,num-channels = <1>;
269	};
270
271	audio_formatter: audio-formatter@1c100000 {
272		compatible = "xlnx,audio-formatter-1.0";
273		reg = <0x0 0x1c000000 0x0 0x10000>;
274		#sound-dai-cells = <0>;
275		interrupt-names = "irq_mm2s";
276		interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
277		clock-names = "s_axi_lite_aclk", "aud_mclk", "m_axis_mm2s_aclk";
278		clocks = <&soc_refclk85mhz>, <&i2s_audclk>, <&soc_refclk85mhz>;
279	};
280
281	sound {
282		compatible = "simple-audio-card";
283		simple-audio-card,format = "i2s";
284		simple-audio-card,bitclock-master = <&audio_master>;
285		simple-audio-card,frame-master = <&audio_master>;
286		audio_master: simple-audio-card,cpu {
287			sound-dai = <&iofpga_i2s>;
288			clocks = <&i2s_audclk>;
289		};
290
291		simple-audio-card,codec {
292			sound-dai = <&hdmi_tx>;
293		};
294
295		simple-audio-card,plat {
296			sound-dai = <&audio_formatter>;
297		};
298	};
299
300	i2s_audclk: i2s_audclk {
301		compatible = "fixed-clock";
302		#clock-cells = <0>;
303		clock-frequency = <12288000>;
304		clock-output-names = "iofpga:i2s_audclk";
305	};
306};
307
308&gic {
309	reg = <0x0 0x30000000 0 0x10000>,	/* GICD */
310	      <0x0 0x300c0000 0 0x80000>;	/* GICR */
311	interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
312
313	its1: msi-controller@30040000 {
314		compatible = "arm,gic-v3-its";
315		msi-controller;
316		#msi-cells = <1>;
317		reg = <0x0 0x30040000 0x0 0x20000>;
318	};
319
320	its2: msi-controller@30060000 {
321		compatible = "arm,gic-v3-its";
322		msi-controller;
323		#msi-cells = <1>;
324		reg = <0x0 0x30060000 0x0 0x20000>;
325	};
326
327	its_ccix: msi-controller@30080000 {
328		compatible = "arm,gic-v3-its";
329		msi-controller;
330		#msi-cells = <1>;
331		reg = <0x0 0x30080000 0x0 0x20000>;
332	};
333
334	its_pcie: msi-controller@300a0000 {
335		compatible = "arm,gic-v3-its";
336		msi-controller;
337		#msi-cells = <1>;
338		reg = <0x0 0x300a0000 0x0 0x20000>;
339	};
340};
341