1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Samsung's ExynosAutov920 SoC device tree source
4 *
5 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
6 *
7 */
8
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/soc/samsung,exynos-usi.h>
11
12/ {
13	compatible = "samsung,exynosautov920";
14	#address-cells = <2>;
15	#size-cells = <1>;
16
17	interrupt-parent = <&gic>;
18
19	aliases {
20		pinctrl0 = &pinctrl_alive;
21		pinctrl1 = &pinctrl_aud;
22		pinctrl2 = &pinctrl_hsi0;
23		pinctrl3 = &pinctrl_hsi1;
24		pinctrl4 = &pinctrl_hsi2;
25		pinctrl5 = &pinctrl_hsi2ufs;
26		pinctrl6 = &pinctrl_peric0;
27		pinctrl7 = &pinctrl_peric1;
28	};
29
30	arm-pmu {
31		compatible = "arm,cortex-a78-pmu";
32		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
33	};
34
35	xtcxo: clock {
36		compatible = "fixed-clock";
37		#clock-cells = <0>;
38		clock-output-names = "oscclk";
39	};
40
41	/*
42	 * FIXME: Keep the stub clock for serial driver, until proper clock
43	 * driver is implemented.
44	 */
45	clock_usi: clock-usi {
46		compatible = "fixed-clock";
47		#clock-cells = <0>;
48		clock-frequency = <200000000>;
49		clock-output-names = "usi";
50	};
51
52	cpus: cpus {
53		#address-cells = <2>;
54		#size-cells = <0>;
55
56		cpu-map {
57			cluster0 {
58				core0 {
59					cpu = <&cpu0>;
60				};
61				core1 {
62					cpu = <&cpu1>;
63				};
64				core2 {
65					cpu = <&cpu2>;
66				};
67				core3 {
68					cpu = <&cpu3>;
69				};
70			};
71
72			cluster1 {
73				core0 {
74					cpu = <&cpu4>;
75				};
76				core1 {
77					cpu = <&cpu5>;
78				};
79				core2 {
80					cpu = <&cpu6>;
81				};
82				core3 {
83					cpu = <&cpu7>;
84				};
85			};
86
87			cluster2 {
88				core0 {
89					cpu = <&cpu8>;
90				};
91				core1 {
92					cpu = <&cpu9>;
93				};
94			};
95		};
96
97		cpu0: cpu@0 {
98			device_type = "cpu";
99			compatible = "arm,cortex-a78ae";
100			reg = <0x0 0x0>;
101			enable-method = "psci";
102		};
103
104		cpu1: cpu@100 {
105			device_type = "cpu";
106			compatible = "arm,cortex-a78ae";
107			reg = <0x0 0x100>;
108			enable-method = "psci";
109		};
110
111		cpu2: cpu@200 {
112			device_type = "cpu";
113			compatible = "arm,cortex-a78ae";
114			reg = <0x0 0x200>;
115			enable-method = "psci";
116		};
117
118		cpu3: cpu@300 {
119			device_type = "cpu";
120			compatible = "arm,cortex-a78ae";
121			reg = <0x0 0x300>;
122			enable-method = "psci";
123		};
124
125		cpu4: cpu@10000 {
126			device_type = "cpu";
127			compatible = "arm,cortex-a78ae";
128			reg = <0x0 0x10000>;
129			enable-method = "psci";
130		};
131
132		cpu5: cpu@10100 {
133			device_type = "cpu";
134			compatible = "arm,cortex-a78ae";
135			reg = <0x0 0x10100>;
136			enable-method = "psci";
137		};
138
139		cpu6: cpu@10200 {
140			device_type = "cpu";
141			compatible = "arm,cortex-a78ae";
142			reg = <0x0 0x10200>;
143			enable-method = "psci";
144		};
145
146		cpu7: cpu@10300 {
147			device_type = "cpu";
148			compatible = "arm,cortex-a78ae";
149			reg = <0x0 0x10300>;
150			enable-method = "psci";
151		};
152
153		cpu8: cpu@20000 {
154			device_type = "cpu";
155			compatible = "arm,cortex-a78ae";
156			reg = <0x0 0x20000>;
157			enable-method = "psci";
158		};
159
160		cpu9: cpu@20100 {
161			device_type = "cpu";
162			compatible = "arm,cortex-a78ae";
163			reg = <0x0 0x20100>;
164			enable-method = "psci";
165		};
166	};
167
168	psci {
169		compatible = "arm,psci-1.0";
170		method = "smc";
171	};
172
173	soc: soc@0 {
174		compatible = "simple-bus";
175		#address-cells = <1>;
176		#size-cells = <1>;
177		ranges = <0x0 0x0 0x0 0x20000000>;
178
179		chipid@10000000 {
180			compatible = "samsung,exynosautov920-chipid",
181				     "samsung,exynos850-chipid";
182			reg = <0x10000000 0x24>;
183		};
184
185		gic: interrupt-controller@10400000 {
186			compatible = "arm,gic-v3";
187			#interrupt-cells = <3>;
188			#address-cells = <0>;
189			interrupt-controller;
190			reg = <0x10400000 0x10000>,
191			      <0x10460000 0x140000>;
192			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
193		};
194
195		syscon_peric0: syscon@10820000 {
196			compatible = "samsung,exynosautov920-peric0-sysreg",
197				     "syscon";
198			reg = <0x10820000 0x2000>;
199		};
200
201		pinctrl_peric0: pinctrl@10830000 {
202			compatible = "samsung,exynosautov920-pinctrl";
203			reg = <0x10830000 0x10000>;
204			interrupts = <GIC_SPI 753 IRQ_TYPE_LEVEL_HIGH>;
205		};
206
207		usi_0: usi@108800c0 {
208			compatible = "samsung,exynosautov920-usi",
209				     "samsung,exynos850-usi";
210			reg = <0x108800c0 0x20>;
211			samsung,sysreg = <&syscon_peric0 0x1000>;
212			samsung,mode = <USI_V2_UART>;
213			#address-cells = <1>;
214			#size-cells = <1>;
215			ranges;
216			clocks = <&clock_usi>, <&clock_usi>;
217			clock-names = "pclk", "ipclk";
218			status = "disabled";
219
220			serial_0: serial@10880000 {
221				compatible = "samsung,exynosautov920-uart",
222					     "samsung,exynos850-uart";
223				reg = <0x10880000 0xc0>;
224				interrupts = <GIC_SPI 764 IRQ_TYPE_LEVEL_HIGH>;
225				pinctrl-names = "default";
226				pinctrl-0 = <&uart0_bus>;
227				clocks = <&clock_usi>, <&clock_usi>;
228				clock-names = "uart", "clk_uart_baud0";
229				samsung,uart-fifosize = <256>;
230				status = "disabled";
231			};
232		};
233
234		pwm: pwm@109b0000 {
235			compatible = "samsung,exynosautov920-pwm",
236				     "samsung,exynos4210-pwm";
237			reg = <0x109b0000 0x100>;
238			samsung,pwm-outputs = <0>, <1>, <2>, <3>;
239			#pwm-cells = <3>;
240			clocks = <&xtcxo>;
241			clock-names = "timers";
242			status = "disabled";
243		};
244
245		syscon_peric1: syscon@10c20000 {
246			compatible = "samsung,exynosautov920-peric1-sysreg",
247				     "syscon";
248			reg = <0x10c20000 0x2000>;
249		};
250
251		pinctrl_peric1: pinctrl@10c30000 {
252			compatible = "samsung,exynosautov920-pinctrl";
253			reg = <0x10c30000 0x10000>;
254			interrupts = <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>;
255		};
256
257		pinctrl_alive: pinctrl@11850000 {
258			compatible = "samsung,exynosautov920-pinctrl";
259			reg = <0x11850000 0x10000>;
260
261			wakeup-interrupt-controller {
262				compatible = "samsung,exynosautov920-wakeup-eint";
263			};
264		};
265
266		pmu_system_controller: system-controller@11860000 {
267			compatible = "samsung,exynosautov920-pmu",
268				     "samsung,exynos7-pmu","syscon";
269			reg = <0x11860000 0x10000>;
270		};
271
272		pinctrl_hsi0: pinctrl@16040000 {
273			compatible = "samsung,exynosautov920-pinctrl";
274			reg = <0x16040000 0x10000>;
275			interrupts = <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>;
276		};
277
278		pinctrl_hsi1: pinctrl@16450000 {
279			compatible = "samsung,exynosautov920-pinctrl";
280			reg = <0x16450000 0x10000>;
281			interrupts = <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>;
282		};
283
284		pinctrl_hsi2: pinctrl@16c10000 {
285			compatible = "samsung,exynosautov920-pinctrl";
286			reg = <0x16c10000 0x10000>;
287			interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
288		};
289
290		pinctrl_hsi2ufs: pinctrl@16d20000 {
291			compatible = "samsung,exynosautov920-pinctrl";
292			reg = <0x16d20000 0x10000>;
293			interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
294		};
295
296		pinctrl_aud: pinctrl@1a460000 {
297			compatible = "samsung,exynosautov920-pinctrl";
298			reg = <0x1a460000 0x10000>;
299		};
300	};
301
302	timer {
303		compatible = "arm,armv8-timer";
304		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
305			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
306			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
307			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
308			     <GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
309	};
310};
311
312#include "exynosautov920-pinctrl.dtsi"
313