xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/ipq5210.dtsi (revision 69ed3df4f588860308677cda76cbcce1f19a54c9)
1*69ed3df4SEmmanuel Vadot// SPDX-License-Identifier: BSD-3-Clause
2*69ed3df4SEmmanuel Vadot/*
3*69ed3df4SEmmanuel Vadot * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4*69ed3df4SEmmanuel Vadot */
5*69ed3df4SEmmanuel Vadot
6*69ed3df4SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
7*69ed3df4SEmmanuel Vadot#include <dt-bindings/clock/qcom,ipq5210-gcc.h>
8*69ed3df4SEmmanuel Vadot#include <dt-bindings/reset/qcom,ipq5210-gcc.h>
9*69ed3df4SEmmanuel Vadot
10*69ed3df4SEmmanuel Vadot/ {
11*69ed3df4SEmmanuel Vadot	#address-cells = <2>;
12*69ed3df4SEmmanuel Vadot	#size-cells = <2>;
13*69ed3df4SEmmanuel Vadot	interrupt-parent = <&intc>;
14*69ed3df4SEmmanuel Vadot
15*69ed3df4SEmmanuel Vadot	clocks {
16*69ed3df4SEmmanuel Vadot		sleep_clk: sleep-clk {
17*69ed3df4SEmmanuel Vadot			compatible = "fixed-clock";
18*69ed3df4SEmmanuel Vadot			#clock-cells = <0>;
19*69ed3df4SEmmanuel Vadot		};
20*69ed3df4SEmmanuel Vadot
21*69ed3df4SEmmanuel Vadot		xo_board: xo-board-clk {
22*69ed3df4SEmmanuel Vadot			compatible = "fixed-clock";
23*69ed3df4SEmmanuel Vadot			#clock-cells = <0>;
24*69ed3df4SEmmanuel Vadot		};
25*69ed3df4SEmmanuel Vadot	};
26*69ed3df4SEmmanuel Vadot
27*69ed3df4SEmmanuel Vadot	cpus {
28*69ed3df4SEmmanuel Vadot		#address-cells = <1>;
29*69ed3df4SEmmanuel Vadot		#size-cells = <0>;
30*69ed3df4SEmmanuel Vadot
31*69ed3df4SEmmanuel Vadot		cpu@0 {
32*69ed3df4SEmmanuel Vadot			device_type = "cpu";
33*69ed3df4SEmmanuel Vadot			compatible = "arm,cortex-a53";
34*69ed3df4SEmmanuel Vadot			reg = <0x0>;
35*69ed3df4SEmmanuel Vadot			enable-method = "psci";
36*69ed3df4SEmmanuel Vadot			next-level-cache = <&l2_0>;
37*69ed3df4SEmmanuel Vadot		};
38*69ed3df4SEmmanuel Vadot
39*69ed3df4SEmmanuel Vadot		cpu@1 {
40*69ed3df4SEmmanuel Vadot			device_type = "cpu";
41*69ed3df4SEmmanuel Vadot			compatible = "arm,cortex-a53";
42*69ed3df4SEmmanuel Vadot			reg = <0x1>;
43*69ed3df4SEmmanuel Vadot			enable-method = "psci";
44*69ed3df4SEmmanuel Vadot			next-level-cache = <&l2_0>;
45*69ed3df4SEmmanuel Vadot		};
46*69ed3df4SEmmanuel Vadot
47*69ed3df4SEmmanuel Vadot		cpu@2 {
48*69ed3df4SEmmanuel Vadot			device_type = "cpu";
49*69ed3df4SEmmanuel Vadot			compatible = "arm,cortex-a53";
50*69ed3df4SEmmanuel Vadot			reg = <0x2>;
51*69ed3df4SEmmanuel Vadot			enable-method = "psci";
52*69ed3df4SEmmanuel Vadot			next-level-cache = <&l2_0>;
53*69ed3df4SEmmanuel Vadot		};
54*69ed3df4SEmmanuel Vadot
55*69ed3df4SEmmanuel Vadot		cpu@3 {
56*69ed3df4SEmmanuel Vadot			device_type = "cpu";
57*69ed3df4SEmmanuel Vadot			compatible = "arm,cortex-a53";
58*69ed3df4SEmmanuel Vadot			reg = <0x3>;
59*69ed3df4SEmmanuel Vadot			enable-method = "psci";
60*69ed3df4SEmmanuel Vadot			next-level-cache = <&l2_0>;
61*69ed3df4SEmmanuel Vadot		};
62*69ed3df4SEmmanuel Vadot
63*69ed3df4SEmmanuel Vadot		l2_0: l2-cache {
64*69ed3df4SEmmanuel Vadot			compatible = "cache";
65*69ed3df4SEmmanuel Vadot			cache-level = <2>;
66*69ed3df4SEmmanuel Vadot			cache-unified;
67*69ed3df4SEmmanuel Vadot		};
68*69ed3df4SEmmanuel Vadot	};
69*69ed3df4SEmmanuel Vadot
70*69ed3df4SEmmanuel Vadot	firmware {
71*69ed3df4SEmmanuel Vadot		optee {
72*69ed3df4SEmmanuel Vadot			compatible = "linaro,optee-tz";
73*69ed3df4SEmmanuel Vadot			method = "smc";
74*69ed3df4SEmmanuel Vadot		};
75*69ed3df4SEmmanuel Vadot
76*69ed3df4SEmmanuel Vadot		scm {
77*69ed3df4SEmmanuel Vadot			compatible = "qcom,scm-ipq5210", "qcom,scm";
78*69ed3df4SEmmanuel Vadot		};
79*69ed3df4SEmmanuel Vadot	};
80*69ed3df4SEmmanuel Vadot
81*69ed3df4SEmmanuel Vadot	memory@80000000 {
82*69ed3df4SEmmanuel Vadot		device_type = "memory";
83*69ed3df4SEmmanuel Vadot		/* We expect the bootloader to fill in the size */
84*69ed3df4SEmmanuel Vadot		reg = <0x0 0x80000000 0x0 0x0>;
85*69ed3df4SEmmanuel Vadot	};
86*69ed3df4SEmmanuel Vadot
87*69ed3df4SEmmanuel Vadot	pmu {
88*69ed3df4SEmmanuel Vadot		compatible = "arm,cortex-a53-pmu";
89*69ed3df4SEmmanuel Vadot		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
90*69ed3df4SEmmanuel Vadot	};
91*69ed3df4SEmmanuel Vadot
92*69ed3df4SEmmanuel Vadot	psci {
93*69ed3df4SEmmanuel Vadot		compatible = "arm,psci-1.0";
94*69ed3df4SEmmanuel Vadot		method = "smc";
95*69ed3df4SEmmanuel Vadot	};
96*69ed3df4SEmmanuel Vadot
97*69ed3df4SEmmanuel Vadot	reserved-memory {
98*69ed3df4SEmmanuel Vadot		#address-cells = <2>;
99*69ed3df4SEmmanuel Vadot		#size-cells = <2>;
100*69ed3df4SEmmanuel Vadot		ranges;
101*69ed3df4SEmmanuel Vadot
102*69ed3df4SEmmanuel Vadot		bootloader@87800000 {
103*69ed3df4SEmmanuel Vadot			reg = <0x0 0x87800000 0x0 0x400000>;
104*69ed3df4SEmmanuel Vadot			no-map;
105*69ed3df4SEmmanuel Vadot		};
106*69ed3df4SEmmanuel Vadot
107*69ed3df4SEmmanuel Vadot		smem@87c00000 {
108*69ed3df4SEmmanuel Vadot			compatible = "qcom,smem";
109*69ed3df4SEmmanuel Vadot			reg = <0x0 0x87c00000 0x0 0x40000>;
110*69ed3df4SEmmanuel Vadot			no-map;
111*69ed3df4SEmmanuel Vadot
112*69ed3df4SEmmanuel Vadot			hwlocks = <&tcsr_mutex 3>;
113*69ed3df4SEmmanuel Vadot		};
114*69ed3df4SEmmanuel Vadot
115*69ed3df4SEmmanuel Vadot		tfa@87d00000 {
116*69ed3df4SEmmanuel Vadot			reg = <0x0 0x87d00000 0x0 0x80000>;
117*69ed3df4SEmmanuel Vadot			no-map;
118*69ed3df4SEmmanuel Vadot		};
119*69ed3df4SEmmanuel Vadot
120*69ed3df4SEmmanuel Vadot		optee@87d80000 {
121*69ed3df4SEmmanuel Vadot			reg = <0x0 0x87d80000 0x0 0x280000>;
122*69ed3df4SEmmanuel Vadot			no-map;
123*69ed3df4SEmmanuel Vadot		};
124*69ed3df4SEmmanuel Vadot	};
125*69ed3df4SEmmanuel Vadot
126*69ed3df4SEmmanuel Vadot	soc@0 {
127*69ed3df4SEmmanuel Vadot		compatible = "simple-bus";
128*69ed3df4SEmmanuel Vadot		#address-cells = <2>;
129*69ed3df4SEmmanuel Vadot		#size-cells = <2>;
130*69ed3df4SEmmanuel Vadot		dma-ranges = <0 0 0 0 0x10 0>;
131*69ed3df4SEmmanuel Vadot		ranges = <0 0 0 0 0x10 0>;
132*69ed3df4SEmmanuel Vadot
133*69ed3df4SEmmanuel Vadot		tlmm: pinctrl@1000000 {
134*69ed3df4SEmmanuel Vadot			compatible = "qcom,ipq5210-tlmm";
135*69ed3df4SEmmanuel Vadot			reg = <0x0 0x01000000 0x0 0x300000>;
136*69ed3df4SEmmanuel Vadot			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
137*69ed3df4SEmmanuel Vadot			gpio-controller;
138*69ed3df4SEmmanuel Vadot			#gpio-cells = <2>;
139*69ed3df4SEmmanuel Vadot			gpio-ranges = <&tlmm 0 0 54>;
140*69ed3df4SEmmanuel Vadot			interrupt-controller;
141*69ed3df4SEmmanuel Vadot			#interrupt-cells = <2>;
142*69ed3df4SEmmanuel Vadot		};
143*69ed3df4SEmmanuel Vadot
144*69ed3df4SEmmanuel Vadot		gcc: clock-controller@1800000 {
145*69ed3df4SEmmanuel Vadot			compatible = "qcom,ipq5210-gcc";
146*69ed3df4SEmmanuel Vadot			reg = <0x0 0x01800000 0x0 0x40000>;
147*69ed3df4SEmmanuel Vadot			clocks = <&xo_board>,
148*69ed3df4SEmmanuel Vadot				 <&sleep_clk>,
149*69ed3df4SEmmanuel Vadot				 <0>,
150*69ed3df4SEmmanuel Vadot				 <0>,
151*69ed3df4SEmmanuel Vadot				 <0>,
152*69ed3df4SEmmanuel Vadot				 <0>;
153*69ed3df4SEmmanuel Vadot			#clock-cells = <1>;
154*69ed3df4SEmmanuel Vadot			#reset-cells = <1>;
155*69ed3df4SEmmanuel Vadot		};
156*69ed3df4SEmmanuel Vadot
157*69ed3df4SEmmanuel Vadot		tcsr_mutex: hwlock@1905000 {
158*69ed3df4SEmmanuel Vadot			compatible = "qcom,tcsr-mutex";
159*69ed3df4SEmmanuel Vadot			reg = <0x0 0x01905000 0x0 0x20000>;
160*69ed3df4SEmmanuel Vadot			#hwlock-cells = <1>;
161*69ed3df4SEmmanuel Vadot		};
162*69ed3df4SEmmanuel Vadot
163*69ed3df4SEmmanuel Vadot		qupv3: geniqup@1ac0000 {
164*69ed3df4SEmmanuel Vadot			compatible = "qcom,geni-se-qup";
165*69ed3df4SEmmanuel Vadot			reg = <0x0 0x01ac0000 0x0 0x2000>;
166*69ed3df4SEmmanuel Vadot			clocks = <&gcc GCC_QUPV3_AHB_MST_CLK>,
167*69ed3df4SEmmanuel Vadot				 <&gcc GCC_QUPV3_AHB_SLV_CLK>;
168*69ed3df4SEmmanuel Vadot			clock-names = "m-ahb", "s-ahb";
169*69ed3df4SEmmanuel Vadot			ranges;
170*69ed3df4SEmmanuel Vadot			#address-cells = <2>;
171*69ed3df4SEmmanuel Vadot			#size-cells = <2>;
172*69ed3df4SEmmanuel Vadot
173*69ed3df4SEmmanuel Vadot			uart1: serial@1a84000 {
174*69ed3df4SEmmanuel Vadot				compatible = "qcom,geni-debug-uart";
175*69ed3df4SEmmanuel Vadot				reg = <0x0 0x01a84000 0x0 0x4000>;
176*69ed3df4SEmmanuel Vadot				clocks = <&gcc GCC_QUPV3_WRAP_SE1_CLK>;
177*69ed3df4SEmmanuel Vadot				clock-names = "se";
178*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
179*69ed3df4SEmmanuel Vadot
180*69ed3df4SEmmanuel Vadot				status = "disabled";
181*69ed3df4SEmmanuel Vadot			};
182*69ed3df4SEmmanuel Vadot		};
183*69ed3df4SEmmanuel Vadot
184*69ed3df4SEmmanuel Vadot		sdhc: mmc@7804000 {
185*69ed3df4SEmmanuel Vadot			compatible = "qcom,ipq5210-sdhci", "qcom,sdhci-msm-v5";
186*69ed3df4SEmmanuel Vadot			reg = <0x0 0x07804000 0x0 0x1000>,
187*69ed3df4SEmmanuel Vadot			      <0x0 0x07805000 0x0 0x1000>;
188*69ed3df4SEmmanuel Vadot			reg-names = "hc",
189*69ed3df4SEmmanuel Vadot				    "cqhci";
190*69ed3df4SEmmanuel Vadot
191*69ed3df4SEmmanuel Vadot			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
192*69ed3df4SEmmanuel Vadot				     <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
193*69ed3df4SEmmanuel Vadot			interrupt-names = "hc_irq",
194*69ed3df4SEmmanuel Vadot					  "pwr_irq";
195*69ed3df4SEmmanuel Vadot
196*69ed3df4SEmmanuel Vadot			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
197*69ed3df4SEmmanuel Vadot				 <&gcc GCC_SDCC1_APPS_CLK>,
198*69ed3df4SEmmanuel Vadot				 <&xo_board>;
199*69ed3df4SEmmanuel Vadot			clock-names = "iface",
200*69ed3df4SEmmanuel Vadot				      "core",
201*69ed3df4SEmmanuel Vadot				      "xo";
202*69ed3df4SEmmanuel Vadot			non-removable;
203*69ed3df4SEmmanuel Vadot
204*69ed3df4SEmmanuel Vadot			status = "disabled";
205*69ed3df4SEmmanuel Vadot		};
206*69ed3df4SEmmanuel Vadot
207*69ed3df4SEmmanuel Vadot		intc: interrupt-controller@b000000 {
208*69ed3df4SEmmanuel Vadot			compatible = "qcom,msm-qgic2";
209*69ed3df4SEmmanuel Vadot			interrupt-controller;
210*69ed3df4SEmmanuel Vadot			#interrupt-cells = <3>;
211*69ed3df4SEmmanuel Vadot			reg = <0x0 0xb000000 0x0 0x1000>,
212*69ed3df4SEmmanuel Vadot			      <0x0 0xb002000 0x0 0x1000>,
213*69ed3df4SEmmanuel Vadot			      <0x0 0xb001000 0x0 0x1000>,
214*69ed3df4SEmmanuel Vadot			      <0x0 0xb004000 0x0 0x1000>;
215*69ed3df4SEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
216*69ed3df4SEmmanuel Vadot			#address-cells = <2>;
217*69ed3df4SEmmanuel Vadot			#size-cells = <2>;
218*69ed3df4SEmmanuel Vadot			ranges = <0 0 0 0x0b00c000 0 0x3000>;
219*69ed3df4SEmmanuel Vadot
220*69ed3df4SEmmanuel Vadot			v2m0: v2m@0 {
221*69ed3df4SEmmanuel Vadot				compatible = "arm,gic-v2m-frame";
222*69ed3df4SEmmanuel Vadot				reg = <0x0 0x0 0x0 0xffd>;
223*69ed3df4SEmmanuel Vadot				msi-controller;
224*69ed3df4SEmmanuel Vadot			};
225*69ed3df4SEmmanuel Vadot
226*69ed3df4SEmmanuel Vadot			v2m1: v2m@1000 {
227*69ed3df4SEmmanuel Vadot				compatible = "arm,gic-v2m-frame";
228*69ed3df4SEmmanuel Vadot				reg = <0x0 0x00001000 0x0 0xffd>;
229*69ed3df4SEmmanuel Vadot				msi-controller;
230*69ed3df4SEmmanuel Vadot			};
231*69ed3df4SEmmanuel Vadot
232*69ed3df4SEmmanuel Vadot			v2m2: v2m@2000 {
233*69ed3df4SEmmanuel Vadot				compatible = "arm,gic-v2m-frame";
234*69ed3df4SEmmanuel Vadot				reg = <0x0 0x00002000 0x0 0xffd>;
235*69ed3df4SEmmanuel Vadot				msi-controller;
236*69ed3df4SEmmanuel Vadot			};
237*69ed3df4SEmmanuel Vadot		};
238*69ed3df4SEmmanuel Vadot
239*69ed3df4SEmmanuel Vadot		timer@b120000 {
240*69ed3df4SEmmanuel Vadot			compatible = "arm,armv7-timer-mem";
241*69ed3df4SEmmanuel Vadot			reg = <0x0 0x0b120000 0x0 0x1000>;
242*69ed3df4SEmmanuel Vadot			ranges = <0 0 0 0x10000000>;
243*69ed3df4SEmmanuel Vadot			#address-cells = <1>;
244*69ed3df4SEmmanuel Vadot			#size-cells = <1>;
245*69ed3df4SEmmanuel Vadot
246*69ed3df4SEmmanuel Vadot			frame@b121000 {
247*69ed3df4SEmmanuel Vadot				frame-number = <0>;
248*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
249*69ed3df4SEmmanuel Vadot					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
250*69ed3df4SEmmanuel Vadot				reg = <0x0b121000 0x1000>,
251*69ed3df4SEmmanuel Vadot				      <0x0b122000 0x1000>;
252*69ed3df4SEmmanuel Vadot			};
253*69ed3df4SEmmanuel Vadot
254*69ed3df4SEmmanuel Vadot			frame@b123000 {
255*69ed3df4SEmmanuel Vadot				frame-number = <1>;
256*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
257*69ed3df4SEmmanuel Vadot				reg = <0x0b123000 0x1000>;
258*69ed3df4SEmmanuel Vadot
259*69ed3df4SEmmanuel Vadot				status = "disabled";
260*69ed3df4SEmmanuel Vadot			};
261*69ed3df4SEmmanuel Vadot
262*69ed3df4SEmmanuel Vadot			frame@b124000 {
263*69ed3df4SEmmanuel Vadot				frame-number = <2>;
264*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
265*69ed3df4SEmmanuel Vadot				reg = <0x0b124000 0x1000>;
266*69ed3df4SEmmanuel Vadot
267*69ed3df4SEmmanuel Vadot				status = "disabled";
268*69ed3df4SEmmanuel Vadot			};
269*69ed3df4SEmmanuel Vadot
270*69ed3df4SEmmanuel Vadot			frame@b125000 {
271*69ed3df4SEmmanuel Vadot				frame-number = <3>;
272*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
273*69ed3df4SEmmanuel Vadot				reg = <0x0b125000 0x1000>;
274*69ed3df4SEmmanuel Vadot
275*69ed3df4SEmmanuel Vadot				status = "disabled";
276*69ed3df4SEmmanuel Vadot			};
277*69ed3df4SEmmanuel Vadot
278*69ed3df4SEmmanuel Vadot			frame@b126000 {
279*69ed3df4SEmmanuel Vadot				frame-number = <4>;
280*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
281*69ed3df4SEmmanuel Vadot				reg = <0x0b126000 0x1000>;
282*69ed3df4SEmmanuel Vadot
283*69ed3df4SEmmanuel Vadot				status = "disabled";
284*69ed3df4SEmmanuel Vadot			};
285*69ed3df4SEmmanuel Vadot
286*69ed3df4SEmmanuel Vadot			frame@b127000 {
287*69ed3df4SEmmanuel Vadot				frame-number = <5>;
288*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
289*69ed3df4SEmmanuel Vadot				reg = <0x0b127000 0x1000>;
290*69ed3df4SEmmanuel Vadot
291*69ed3df4SEmmanuel Vadot				status = "disabled";
292*69ed3df4SEmmanuel Vadot			};
293*69ed3df4SEmmanuel Vadot
294*69ed3df4SEmmanuel Vadot			frame@b128000 {
295*69ed3df4SEmmanuel Vadot				frame-number = <6>;
296*69ed3df4SEmmanuel Vadot				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
297*69ed3df4SEmmanuel Vadot				reg = <0x0b128000 0x1000>;
298*69ed3df4SEmmanuel Vadot
299*69ed3df4SEmmanuel Vadot				status = "disabled";
300*69ed3df4SEmmanuel Vadot			};
301*69ed3df4SEmmanuel Vadot		};
302*69ed3df4SEmmanuel Vadot	};
303*69ed3df4SEmmanuel Vadot
304*69ed3df4SEmmanuel Vadot	timer {
305*69ed3df4SEmmanuel Vadot		compatible = "arm,armv8-timer";
306*69ed3df4SEmmanuel Vadot		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
307*69ed3df4SEmmanuel Vadot			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
308*69ed3df4SEmmanuel Vadot			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
309*69ed3df4SEmmanuel Vadot			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
310*69ed3df4SEmmanuel Vadot	};
311*69ed3df4SEmmanuel Vadot};
312