xref: /freebsd/sys/contrib/device-tree/src/arm64/exynos/axis/artpec8.dtsi (revision 1537cf73828a2db2a67622ccfff77383c7db6f07)
1*1537cf73SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*1537cf73SEmmanuel Vadot/*
3*1537cf73SEmmanuel Vadot * Axis ARTPEC-8 SoC device tree source
4*1537cf73SEmmanuel Vadot *
5*1537cf73SEmmanuel Vadot * Copyright (c) 2025 Samsung Electronics Co., Ltd.
6*1537cf73SEmmanuel Vadot *             https://www.samsung.com
7*1537cf73SEmmanuel Vadot * Copyright (c) 2025  Axis Communications AB.
8*1537cf73SEmmanuel Vadot *             https://www.axis.com
9*1537cf73SEmmanuel Vadot */
10*1537cf73SEmmanuel Vadot
11*1537cf73SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
12*1537cf73SEmmanuel Vadot#include <dt-bindings/clock/axis,artpec8-clk.h>
13*1537cf73SEmmanuel Vadot
14*1537cf73SEmmanuel Vadot/ {
15*1537cf73SEmmanuel Vadot	compatible = "axis,artpec8";
16*1537cf73SEmmanuel Vadot	interrupt-parent = <&gic>;
17*1537cf73SEmmanuel Vadot	#address-cells = <2>;
18*1537cf73SEmmanuel Vadot	#size-cells = <2>;
19*1537cf73SEmmanuel Vadot
20*1537cf73SEmmanuel Vadot	aliases {
21*1537cf73SEmmanuel Vadot		pinctrl0 = &pinctrl_fsys;
22*1537cf73SEmmanuel Vadot		pinctrl1 = &pinctrl_peric;
23*1537cf73SEmmanuel Vadot	};
24*1537cf73SEmmanuel Vadot
25*1537cf73SEmmanuel Vadot	cpus {
26*1537cf73SEmmanuel Vadot		#address-cells = <1>;
27*1537cf73SEmmanuel Vadot		#size-cells = <0>;
28*1537cf73SEmmanuel Vadot
29*1537cf73SEmmanuel Vadot		cpu0: cpu@0 {
30*1537cf73SEmmanuel Vadot			device_type = "cpu";
31*1537cf73SEmmanuel Vadot			compatible = "arm,cortex-a53";
32*1537cf73SEmmanuel Vadot			reg = <0x0>;
33*1537cf73SEmmanuel Vadot			enable-method = "psci";
34*1537cf73SEmmanuel Vadot			cpu-idle-states = <&cpu_sleep>;
35*1537cf73SEmmanuel Vadot			clocks = <&cmu_cpucl CLK_GOUT_CPUCL_CLUSTER_CPU>;
36*1537cf73SEmmanuel Vadot			clock-names = "cpu";
37*1537cf73SEmmanuel Vadot		};
38*1537cf73SEmmanuel Vadot
39*1537cf73SEmmanuel Vadot		cpu1: cpu@1 {
40*1537cf73SEmmanuel Vadot			device_type = "cpu";
41*1537cf73SEmmanuel Vadot			compatible = "arm,cortex-a53";
42*1537cf73SEmmanuel Vadot			reg = <0x1>;
43*1537cf73SEmmanuel Vadot			enable-method = "psci";
44*1537cf73SEmmanuel Vadot			cpu-idle-states = <&cpu_sleep>;
45*1537cf73SEmmanuel Vadot		};
46*1537cf73SEmmanuel Vadot
47*1537cf73SEmmanuel Vadot		cpu2: cpu@2 {
48*1537cf73SEmmanuel Vadot			device_type = "cpu";
49*1537cf73SEmmanuel Vadot			compatible = "arm,cortex-a53";
50*1537cf73SEmmanuel Vadot			reg = <0x2>;
51*1537cf73SEmmanuel Vadot			enable-method = "psci";
52*1537cf73SEmmanuel Vadot			cpu-idle-states = <&cpu_sleep>;
53*1537cf73SEmmanuel Vadot		};
54*1537cf73SEmmanuel Vadot
55*1537cf73SEmmanuel Vadot		cpu3: cpu@3 {
56*1537cf73SEmmanuel Vadot			device_type = "cpu";
57*1537cf73SEmmanuel Vadot			compatible = "arm,cortex-a53";
58*1537cf73SEmmanuel Vadot			reg = <0x3>;
59*1537cf73SEmmanuel Vadot			enable-method = "psci";
60*1537cf73SEmmanuel Vadot			cpu-idle-states = <&cpu_sleep>;
61*1537cf73SEmmanuel Vadot		};
62*1537cf73SEmmanuel Vadot
63*1537cf73SEmmanuel Vadot		idle-states {
64*1537cf73SEmmanuel Vadot			entry-method = "psci";
65*1537cf73SEmmanuel Vadot
66*1537cf73SEmmanuel Vadot			cpu_sleep: cpu-sleep {
67*1537cf73SEmmanuel Vadot				compatible = "arm,idle-state";
68*1537cf73SEmmanuel Vadot				arm,psci-suspend-param = <0x0010000>;
69*1537cf73SEmmanuel Vadot				local-timer-stop;
70*1537cf73SEmmanuel Vadot				entry-latency-us = <300>;
71*1537cf73SEmmanuel Vadot				exit-latency-us = <1200>;
72*1537cf73SEmmanuel Vadot				min-residency-us = <2000>;
73*1537cf73SEmmanuel Vadot			};
74*1537cf73SEmmanuel Vadot		};
75*1537cf73SEmmanuel Vadot	};
76*1537cf73SEmmanuel Vadot
77*1537cf73SEmmanuel Vadot	fin_pll: clock-finpll {
78*1537cf73SEmmanuel Vadot		compatible = "fixed-factor-clock";
79*1537cf73SEmmanuel Vadot		clocks = <&osc_clk>;
80*1537cf73SEmmanuel Vadot		#clock-cells = <0>;
81*1537cf73SEmmanuel Vadot		clock-div = <2>;
82*1537cf73SEmmanuel Vadot		clock-mult = <1>;
83*1537cf73SEmmanuel Vadot		clock-output-names = "fin_pll";
84*1537cf73SEmmanuel Vadot	};
85*1537cf73SEmmanuel Vadot
86*1537cf73SEmmanuel Vadot	osc_clk: clock-osc {
87*1537cf73SEmmanuel Vadot		/* XXTI */
88*1537cf73SEmmanuel Vadot		compatible = "fixed-clock";
89*1537cf73SEmmanuel Vadot		#clock-cells = <0>;
90*1537cf73SEmmanuel Vadot		clock-output-names = "osc_clk";
91*1537cf73SEmmanuel Vadot	};
92*1537cf73SEmmanuel Vadot
93*1537cf73SEmmanuel Vadot	pmu {
94*1537cf73SEmmanuel Vadot		compatible = "arm,cortex-a53-pmu";
95*1537cf73SEmmanuel Vadot		interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
96*1537cf73SEmmanuel Vadot			     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
97*1537cf73SEmmanuel Vadot			     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
98*1537cf73SEmmanuel Vadot			     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
99*1537cf73SEmmanuel Vadot		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
100*1537cf73SEmmanuel Vadot	};
101*1537cf73SEmmanuel Vadot
102*1537cf73SEmmanuel Vadot	psci {
103*1537cf73SEmmanuel Vadot		compatible = "arm,psci-0.2";
104*1537cf73SEmmanuel Vadot		method = "smc";
105*1537cf73SEmmanuel Vadot	};
106*1537cf73SEmmanuel Vadot
107*1537cf73SEmmanuel Vadot	soc: soc@0 {
108*1537cf73SEmmanuel Vadot		compatible = "simple-bus";
109*1537cf73SEmmanuel Vadot		ranges = <0x0 0x0 0x0 0x17000000>;
110*1537cf73SEmmanuel Vadot		#address-cells = <1>;
111*1537cf73SEmmanuel Vadot		#size-cells = <1>;
112*1537cf73SEmmanuel Vadot
113*1537cf73SEmmanuel Vadot		cmu_imem: clock-controller@10010000 {
114*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-imem";
115*1537cf73SEmmanuel Vadot			reg = <0x10010000 0x4000>;
116*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
117*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
118*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_IMEM_ACLK>,
119*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_IMEM_JPEG>;
120*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "aclk", "jpeg";
121*1537cf73SEmmanuel Vadot		};
122*1537cf73SEmmanuel Vadot
123*1537cf73SEmmanuel Vadot		timer@10040000 {
124*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-mct", "samsung,exynos4210-mct";
125*1537cf73SEmmanuel Vadot			reg = <0x10040000 0x1000>;
126*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>, <&cmu_imem CLK_GOUT_IMEM_MCT_PCLK>;
127*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "mct";
128*1537cf73SEmmanuel Vadot			interrupts = <GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
129*1537cf73SEmmanuel Vadot				     <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
130*1537cf73SEmmanuel Vadot				     <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
131*1537cf73SEmmanuel Vadot				     <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
132*1537cf73SEmmanuel Vadot				     <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
133*1537cf73SEmmanuel Vadot				     <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
134*1537cf73SEmmanuel Vadot				     <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
135*1537cf73SEmmanuel Vadot				     <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
136*1537cf73SEmmanuel Vadot				     <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
137*1537cf73SEmmanuel Vadot				     <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
138*1537cf73SEmmanuel Vadot				     <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
139*1537cf73SEmmanuel Vadot				     <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>;
140*1537cf73SEmmanuel Vadot		};
141*1537cf73SEmmanuel Vadot
142*1537cf73SEmmanuel Vadot		gic: interrupt-controller@10201000 {
143*1537cf73SEmmanuel Vadot			compatible = "arm,gic-400";
144*1537cf73SEmmanuel Vadot			reg = <0x10201000 0x1000>,
145*1537cf73SEmmanuel Vadot			      <0x10202000 0x2000>,
146*1537cf73SEmmanuel Vadot			      <0x10204000 0x2000>,
147*1537cf73SEmmanuel Vadot			      <0x10206000 0x2000>;
148*1537cf73SEmmanuel Vadot			#interrupt-cells = <3>;
149*1537cf73SEmmanuel Vadot			interrupt-controller;
150*1537cf73SEmmanuel Vadot			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
151*1537cf73SEmmanuel Vadot		};
152*1537cf73SEmmanuel Vadot
153*1537cf73SEmmanuel Vadot		cmu_cpucl: clock-controller@11410000 {
154*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-cpucl";
155*1537cf73SEmmanuel Vadot			reg = <0x11410000 0x4000>;
156*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
157*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
158*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_CPUCL_SWITCH>;
159*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "switch";
160*1537cf73SEmmanuel Vadot		};
161*1537cf73SEmmanuel Vadot
162*1537cf73SEmmanuel Vadot		cmu_cmu: clock-controller@12400000 {
163*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-cmu";
164*1537cf73SEmmanuel Vadot			reg = <0x12400000 0x4000>;
165*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
166*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>;
167*1537cf73SEmmanuel Vadot			clock-names = "fin_pll";
168*1537cf73SEmmanuel Vadot		};
169*1537cf73SEmmanuel Vadot
170*1537cf73SEmmanuel Vadot		cmu_core: clock-controller@12410000 {
171*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-core";
172*1537cf73SEmmanuel Vadot			reg = <0x12410000 0x4000>;
173*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
174*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
175*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_CORE_MAIN>,
176*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_CORE_DLP>;
177*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "main", "dlp";
178*1537cf73SEmmanuel Vadot		};
179*1537cf73SEmmanuel Vadot
180*1537cf73SEmmanuel Vadot		cmu_bus: clock-controller@12c10000 {
181*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-bus";
182*1537cf73SEmmanuel Vadot			reg = <0x12c10000 0x4000>;
183*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
184*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
185*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_BUS>,
186*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_BUS_DLP>;
187*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "bus", "dlp";
188*1537cf73SEmmanuel Vadot		};
189*1537cf73SEmmanuel Vadot
190*1537cf73SEmmanuel Vadot		cmu_peri: clock-controller@16410000 {
191*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-peri";
192*1537cf73SEmmanuel Vadot			reg = <0x16410000 0x4000>;
193*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
194*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
195*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_PERI_IP>,
196*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_PERI_AUDIO>,
197*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_PERI_DISP>;
198*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "ip", "audio", "disp";
199*1537cf73SEmmanuel Vadot		};
200*1537cf73SEmmanuel Vadot
201*1537cf73SEmmanuel Vadot		pinctrl_peric: pinctrl@165f0000 {
202*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-pinctrl";
203*1537cf73SEmmanuel Vadot			reg = <0x165f0000 0x1000>;
204*1537cf73SEmmanuel Vadot			interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>;
205*1537cf73SEmmanuel Vadot		};
206*1537cf73SEmmanuel Vadot
207*1537cf73SEmmanuel Vadot		cmu_fsys: clock-controller@16c10000 {
208*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-cmu-fsys";
209*1537cf73SEmmanuel Vadot			reg = <0x16c10000 0x4000>;
210*1537cf73SEmmanuel Vadot			#clock-cells = <1>;
211*1537cf73SEmmanuel Vadot			clocks = <&fin_pll>,
212*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_FSYS_SCAN0>,
213*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_FSYS_SCAN1>,
214*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_FSYS_BUS>,
215*1537cf73SEmmanuel Vadot				 <&cmu_cmu CLK_DOUT_CMU_FSYS_IP>;
216*1537cf73SEmmanuel Vadot			clock-names = "fin_pll", "scan0", "scan1", "bus", "ip";
217*1537cf73SEmmanuel Vadot		};
218*1537cf73SEmmanuel Vadot
219*1537cf73SEmmanuel Vadot		pinctrl_fsys: pinctrl@16c30000 {
220*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-pinctrl";
221*1537cf73SEmmanuel Vadot			reg = <0x16c30000 0x1000>;
222*1537cf73SEmmanuel Vadot			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
223*1537cf73SEmmanuel Vadot		};
224*1537cf73SEmmanuel Vadot
225*1537cf73SEmmanuel Vadot		serial_0: serial@16cc0000 {
226*1537cf73SEmmanuel Vadot			compatible = "axis,artpec8-uart";
227*1537cf73SEmmanuel Vadot			reg = <0x16cc0000 0x100>;
228*1537cf73SEmmanuel Vadot			clocks = <&cmu_fsys CLK_GOUT_FSYS_UART0_PCLK>,
229*1537cf73SEmmanuel Vadot				 <&cmu_fsys CLK_GOUT_FSYS_UART0_SCLK_UART>;
230*1537cf73SEmmanuel Vadot			clock-names = "uart", "clk_uart_baud0";
231*1537cf73SEmmanuel Vadot			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
232*1537cf73SEmmanuel Vadot			pinctrl-names = "default";
233*1537cf73SEmmanuel Vadot			pinctrl-0 = <&serial0_bus>;
234*1537cf73SEmmanuel Vadot		};
235*1537cf73SEmmanuel Vadot	};
236*1537cf73SEmmanuel Vadot
237*1537cf73SEmmanuel Vadot	timer {
238*1537cf73SEmmanuel Vadot		compatible = "arm,armv8-timer";
239*1537cf73SEmmanuel Vadot		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
240*1537cf73SEmmanuel Vadot			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
241*1537cf73SEmmanuel Vadot			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
242*1537cf73SEmmanuel Vadot			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
243*1537cf73SEmmanuel Vadot	};
244*1537cf73SEmmanuel Vadot};
245