xref: /freebsd/sys/contrib/device-tree/src/arm64/exynos/exynos9810.dtsi (revision 2846c90520eb4cc74e24d586a0ea0f4a0006bc73)
1*2846c905SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2*2846c905SEmmanuel Vadot/*
3*2846c905SEmmanuel Vadot * Samsung Exynos 9810 SoC device tree source
4*2846c905SEmmanuel Vadot *
5*2846c905SEmmanuel Vadot * Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
6*2846c905SEmmanuel Vadot * Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
7*2846c905SEmmanuel Vadot */
8*2846c905SEmmanuel Vadot
9*2846c905SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
10*2846c905SEmmanuel Vadot
11*2846c905SEmmanuel Vadot/ {
12*2846c905SEmmanuel Vadot	compatible = "samsung,exynos9810";
13*2846c905SEmmanuel Vadot	#address-cells = <2>;
14*2846c905SEmmanuel Vadot	#size-cells = <1>;
15*2846c905SEmmanuel Vadot
16*2846c905SEmmanuel Vadot	interrupt-parent = <&gic>;
17*2846c905SEmmanuel Vadot
18*2846c905SEmmanuel Vadot	aliases {
19*2846c905SEmmanuel Vadot		pinctrl0 = &pinctrl_alive;
20*2846c905SEmmanuel Vadot		pinctrl1 = &pinctrl_aud;
21*2846c905SEmmanuel Vadot		pinctrl2 = &pinctrl_chub;
22*2846c905SEmmanuel Vadot		pinctrl3 = &pinctrl_cmgp;
23*2846c905SEmmanuel Vadot		pinctrl4 = &pinctrl_fsys0;
24*2846c905SEmmanuel Vadot		pinctrl5 = &pinctrl_fsys1;
25*2846c905SEmmanuel Vadot		pinctrl6 = &pinctrl_peric0;
26*2846c905SEmmanuel Vadot		pinctrl7 = &pinctrl_peric1;
27*2846c905SEmmanuel Vadot		pinctrl8 = &pinctrl_vts;
28*2846c905SEmmanuel Vadot	};
29*2846c905SEmmanuel Vadot
30*2846c905SEmmanuel Vadot	cpus {
31*2846c905SEmmanuel Vadot		#address-cells = <1>;
32*2846c905SEmmanuel Vadot		#size-cells = <0>;
33*2846c905SEmmanuel Vadot
34*2846c905SEmmanuel Vadot		cpu-map {
35*2846c905SEmmanuel Vadot			cluster0 {
36*2846c905SEmmanuel Vadot				core0 {
37*2846c905SEmmanuel Vadot					cpu = <&cpu0>;
38*2846c905SEmmanuel Vadot				};
39*2846c905SEmmanuel Vadot				core1 {
40*2846c905SEmmanuel Vadot					cpu = <&cpu1>;
41*2846c905SEmmanuel Vadot				};
42*2846c905SEmmanuel Vadot				core2 {
43*2846c905SEmmanuel Vadot					cpu = <&cpu2>;
44*2846c905SEmmanuel Vadot				};
45*2846c905SEmmanuel Vadot				core3 {
46*2846c905SEmmanuel Vadot					cpu = <&cpu3>;
47*2846c905SEmmanuel Vadot				};
48*2846c905SEmmanuel Vadot			};
49*2846c905SEmmanuel Vadot
50*2846c905SEmmanuel Vadot			cluster1 {
51*2846c905SEmmanuel Vadot				core0 {
52*2846c905SEmmanuel Vadot					cpu = <&cpu4>;
53*2846c905SEmmanuel Vadot				};
54*2846c905SEmmanuel Vadot				core1 {
55*2846c905SEmmanuel Vadot					cpu = <&cpu5>;
56*2846c905SEmmanuel Vadot				};
57*2846c905SEmmanuel Vadot				core2 {
58*2846c905SEmmanuel Vadot					cpu = <&cpu6>;
59*2846c905SEmmanuel Vadot				};
60*2846c905SEmmanuel Vadot				core3 {
61*2846c905SEmmanuel Vadot					cpu = <&cpu7>;
62*2846c905SEmmanuel Vadot				};
63*2846c905SEmmanuel Vadot			};
64*2846c905SEmmanuel Vadot		};
65*2846c905SEmmanuel Vadot
66*2846c905SEmmanuel Vadot		cpu0: cpu@0 {
67*2846c905SEmmanuel Vadot			device_type = "cpu";
68*2846c905SEmmanuel Vadot			compatible = "arm,cortex-a55";
69*2846c905SEmmanuel Vadot			reg = <0x0>;
70*2846c905SEmmanuel Vadot			enable-method = "psci";
71*2846c905SEmmanuel Vadot		};
72*2846c905SEmmanuel Vadot
73*2846c905SEmmanuel Vadot		cpu1: cpu@1 {
74*2846c905SEmmanuel Vadot			device_type = "cpu";
75*2846c905SEmmanuel Vadot			compatible = "arm,cortex-a55";
76*2846c905SEmmanuel Vadot			reg = <0x1>;
77*2846c905SEmmanuel Vadot			enable-method = "psci";
78*2846c905SEmmanuel Vadot		};
79*2846c905SEmmanuel Vadot
80*2846c905SEmmanuel Vadot		cpu2: cpu@2 {
81*2846c905SEmmanuel Vadot			device_type = "cpu";
82*2846c905SEmmanuel Vadot			compatible = "arm,cortex-a55";
83*2846c905SEmmanuel Vadot			reg = <0x2>;
84*2846c905SEmmanuel Vadot			enable-method = "psci";
85*2846c905SEmmanuel Vadot		};
86*2846c905SEmmanuel Vadot
87*2846c905SEmmanuel Vadot		cpu3: cpu@3 {
88*2846c905SEmmanuel Vadot			device_type = "cpu";
89*2846c905SEmmanuel Vadot			compatible = "arm,cortex-a55";
90*2846c905SEmmanuel Vadot			reg = <0x3>;
91*2846c905SEmmanuel Vadot			enable-method = "psci";
92*2846c905SEmmanuel Vadot		};
93*2846c905SEmmanuel Vadot
94*2846c905SEmmanuel Vadot		cpu4: cpu@100 {
95*2846c905SEmmanuel Vadot			device_type = "cpu";
96*2846c905SEmmanuel Vadot			compatible = "samsung,mongoose-m3";
97*2846c905SEmmanuel Vadot			reg = <0x100>;
98*2846c905SEmmanuel Vadot			enable-method = "psci";
99*2846c905SEmmanuel Vadot		};
100*2846c905SEmmanuel Vadot
101*2846c905SEmmanuel Vadot		cpu5: cpu@101 {
102*2846c905SEmmanuel Vadot			device_type = "cpu";
103*2846c905SEmmanuel Vadot			compatible = "samsung,mongoose-m3";
104*2846c905SEmmanuel Vadot			reg = <0x101>;
105*2846c905SEmmanuel Vadot			enable-method = "psci";
106*2846c905SEmmanuel Vadot		};
107*2846c905SEmmanuel Vadot
108*2846c905SEmmanuel Vadot		cpu6: cpu@102 {
109*2846c905SEmmanuel Vadot			device_type = "cpu";
110*2846c905SEmmanuel Vadot			compatible = "samsung,mongoose-m3";
111*2846c905SEmmanuel Vadot			reg = <0x102>;
112*2846c905SEmmanuel Vadot			enable-method = "psci";
113*2846c905SEmmanuel Vadot		};
114*2846c905SEmmanuel Vadot
115*2846c905SEmmanuel Vadot		cpu7: cpu@103 {
116*2846c905SEmmanuel Vadot			device_type = "cpu";
117*2846c905SEmmanuel Vadot			compatible = "samsung,mongoose-m3";
118*2846c905SEmmanuel Vadot			reg = <0x103>;
119*2846c905SEmmanuel Vadot			enable-method = "psci";
120*2846c905SEmmanuel Vadot		};
121*2846c905SEmmanuel Vadot	};
122*2846c905SEmmanuel Vadot
123*2846c905SEmmanuel Vadot	oscclk: osc-clock {
124*2846c905SEmmanuel Vadot		compatible = "fixed-clock";
125*2846c905SEmmanuel Vadot		#clock-cells = <0>;
126*2846c905SEmmanuel Vadot		clock-output-names = "oscclk";
127*2846c905SEmmanuel Vadot	};
128*2846c905SEmmanuel Vadot
129*2846c905SEmmanuel Vadot	pmu-a55 {
130*2846c905SEmmanuel Vadot		compatible = "arm,cortex-a55-pmu";
131*2846c905SEmmanuel Vadot		interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
132*2846c905SEmmanuel Vadot			     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
133*2846c905SEmmanuel Vadot			     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
134*2846c905SEmmanuel Vadot			     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
135*2846c905SEmmanuel Vadot		interrupt-affinity = <&cpu0>,
136*2846c905SEmmanuel Vadot				     <&cpu1>,
137*2846c905SEmmanuel Vadot				     <&cpu2>,
138*2846c905SEmmanuel Vadot				     <&cpu3>;
139*2846c905SEmmanuel Vadot	};
140*2846c905SEmmanuel Vadot
141*2846c905SEmmanuel Vadot	pmu-mongoose-m3 {
142*2846c905SEmmanuel Vadot		compatible = "samsung,mongoose-pmu";
143*2846c905SEmmanuel Vadot		interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
144*2846c905SEmmanuel Vadot			     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
145*2846c905SEmmanuel Vadot			     <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
146*2846c905SEmmanuel Vadot			     <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
147*2846c905SEmmanuel Vadot		interrupt-affinity = <&cpu4>,
148*2846c905SEmmanuel Vadot				     <&cpu5>,
149*2846c905SEmmanuel Vadot				     <&cpu6>,
150*2846c905SEmmanuel Vadot				     <&cpu7>;
151*2846c905SEmmanuel Vadot	};
152*2846c905SEmmanuel Vadot
153*2846c905SEmmanuel Vadot	psci {
154*2846c905SEmmanuel Vadot		compatible = "arm,psci";
155*2846c905SEmmanuel Vadot		method = "smc";
156*2846c905SEmmanuel Vadot		cpu_off = <0x84000002>;
157*2846c905SEmmanuel Vadot		cpu_on = <0xc4000003>;
158*2846c905SEmmanuel Vadot		cpu_suspend = <0xc4000001>;
159*2846c905SEmmanuel Vadot	};
160*2846c905SEmmanuel Vadot
161*2846c905SEmmanuel Vadot	soc: soc@0 {
162*2846c905SEmmanuel Vadot		compatible = "simple-bus";
163*2846c905SEmmanuel Vadot		ranges = <0x0 0x0 0x0 0x20000000>;
164*2846c905SEmmanuel Vadot
165*2846c905SEmmanuel Vadot		#address-cells = <1>;
166*2846c905SEmmanuel Vadot		#size-cells = <1>;
167*2846c905SEmmanuel Vadot
168*2846c905SEmmanuel Vadot		chipid@10000000 {
169*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-chipid",
170*2846c905SEmmanuel Vadot				     "samsung,exynos850-chipid";
171*2846c905SEmmanuel Vadot			reg = <0x10000000 0x100>;
172*2846c905SEmmanuel Vadot		};
173*2846c905SEmmanuel Vadot
174*2846c905SEmmanuel Vadot		gic: interrupt-controller@10101000 {
175*2846c905SEmmanuel Vadot			compatible = "arm,gic-400";
176*2846c905SEmmanuel Vadot			reg = <0x10101000 0x1000>,
177*2846c905SEmmanuel Vadot			      <0x10102000 0x1000>,
178*2846c905SEmmanuel Vadot			      <0x10104000 0x2000>,
179*2846c905SEmmanuel Vadot			      <0x10106000 0x2000>;
180*2846c905SEmmanuel Vadot			#interrupt-cells = <3>;
181*2846c905SEmmanuel Vadot			interrupt-controller;
182*2846c905SEmmanuel Vadot			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
183*2846c905SEmmanuel Vadot						 IRQ_TYPE_LEVEL_HIGH)>;
184*2846c905SEmmanuel Vadot			#address-cells = <0>;
185*2846c905SEmmanuel Vadot			#size-cells = <1>;
186*2846c905SEmmanuel Vadot		};
187*2846c905SEmmanuel Vadot
188*2846c905SEmmanuel Vadot		pinctrl_peric0: pinctrl@10430000 {
189*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
190*2846c905SEmmanuel Vadot			reg = <0x10430000 0x1000>;
191*2846c905SEmmanuel Vadot			interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>;
192*2846c905SEmmanuel Vadot		};
193*2846c905SEmmanuel Vadot
194*2846c905SEmmanuel Vadot		pinctrl_peric1: pinctrl@10830000 {
195*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
196*2846c905SEmmanuel Vadot			reg = <0x10830000 0x1000>;
197*2846c905SEmmanuel Vadot			interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
198*2846c905SEmmanuel Vadot		};
199*2846c905SEmmanuel Vadot
200*2846c905SEmmanuel Vadot		pinctrl_fsys0: pinctrl@11050000 {
201*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
202*2846c905SEmmanuel Vadot			reg = <0x11050000 0x1000>;
203*2846c905SEmmanuel Vadot			interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
204*2846c905SEmmanuel Vadot		};
205*2846c905SEmmanuel Vadot
206*2846c905SEmmanuel Vadot		pinctrl_fsys1: pinctrl@11430000 {
207*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
208*2846c905SEmmanuel Vadot			reg = <0x11430000 0x1000>;
209*2846c905SEmmanuel Vadot			interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>;
210*2846c905SEmmanuel Vadot		};
211*2846c905SEmmanuel Vadot
212*2846c905SEmmanuel Vadot		pinctrl_vts: pinctrl@13880000 {
213*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
214*2846c905SEmmanuel Vadot			reg = <0x13880000 0x1000>;
215*2846c905SEmmanuel Vadot		};
216*2846c905SEmmanuel Vadot
217*2846c905SEmmanuel Vadot		pinctrl_chub: pinctrl@13a80000 {
218*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
219*2846c905SEmmanuel Vadot			reg = <0x13a80000 0x1000>;
220*2846c905SEmmanuel Vadot			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
221*2846c905SEmmanuel Vadot		};
222*2846c905SEmmanuel Vadot
223*2846c905SEmmanuel Vadot		pinctrl_alive: pinctrl@14050000 {
224*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
225*2846c905SEmmanuel Vadot			reg = <0x14050000 0x1000>;
226*2846c905SEmmanuel Vadot
227*2846c905SEmmanuel Vadot			wakeup-interrupt-controller {
228*2846c905SEmmanuel Vadot				compatible = "samsung,exynos9810-wakeup-eint",
229*2846c905SEmmanuel Vadot					     "samsung,exynos850-wakeup-eint",
230*2846c905SEmmanuel Vadot					     "samsung,exynos7-wakeup-eint";
231*2846c905SEmmanuel Vadot			};
232*2846c905SEmmanuel Vadot		};
233*2846c905SEmmanuel Vadot
234*2846c905SEmmanuel Vadot		pmu_system_controller: system-controller@14060000 {
235*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pmu",
236*2846c905SEmmanuel Vadot				     "samsung,exynos7-pmu", "syscon";
237*2846c905SEmmanuel Vadot			reg = <0x14060000 0x10000>;
238*2846c905SEmmanuel Vadot		};
239*2846c905SEmmanuel Vadot
240*2846c905SEmmanuel Vadot		pinctrl_cmgp: pinctrl@14220000 {
241*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
242*2846c905SEmmanuel Vadot			reg = <0x14220000 0x1000>;
243*2846c905SEmmanuel Vadot
244*2846c905SEmmanuel Vadot			wakeup-interrupt-controller {
245*2846c905SEmmanuel Vadot				compatible = "samsung,exynos9810-wakeup-eint",
246*2846c905SEmmanuel Vadot					     "samsung,exynos850-wakeup-eint",
247*2846c905SEmmanuel Vadot					     "samsung,exynos7-wakeup-eint";
248*2846c905SEmmanuel Vadot			};
249*2846c905SEmmanuel Vadot		};
250*2846c905SEmmanuel Vadot
251*2846c905SEmmanuel Vadot		pinctrl_aud: pinctrl@17c60000 {
252*2846c905SEmmanuel Vadot			compatible = "samsung,exynos9810-pinctrl";
253*2846c905SEmmanuel Vadot			reg = <0x17c60000 0x1000>;
254*2846c905SEmmanuel Vadot		};
255*2846c905SEmmanuel Vadot	};
256*2846c905SEmmanuel Vadot
257*2846c905SEmmanuel Vadot	timer {
258*2846c905SEmmanuel Vadot		compatible = "arm,armv8-timer";
259*2846c905SEmmanuel Vadot		/* Hypervisor Virtual Timer interrupt is not wired to GIC */
260*2846c905SEmmanuel Vadot		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
261*2846c905SEmmanuel Vadot			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
262*2846c905SEmmanuel Vadot			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
263*2846c905SEmmanuel Vadot			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
264*2846c905SEmmanuel Vadot		/*
265*2846c905SEmmanuel Vadot		 * Non-updatable, broken stock Samsung bootloader does not
266*2846c905SEmmanuel Vadot		 * configure CNTFRQ_EL0
267*2846c905SEmmanuel Vadot		 */
268*2846c905SEmmanuel Vadot		clock-frequency = <26000000>;
269*2846c905SEmmanuel Vadot	};
270*2846c905SEmmanuel Vadot};
271*2846c905SEmmanuel Vadot
272*2846c905SEmmanuel Vadot#include "exynos9810-pinctrl.dtsi"
273*2846c905SEmmanuel Vadot#include "arm/samsung/exynos-syscon-restart.dtsi"
274