xref: /freebsd/sys/contrib/device-tree/src/arm64/allwinner/sun50i-h5.dtsi (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2c66ec88fSEmmanuel Vadot// Copyright (C) 2016 ARM Ltd.
3c66ec88fSEmmanuel Vadot
4*f126890aSEmmanuel Vadot#include <arm/allwinner/sunxi-h3-h5.dtsi>
5c66ec88fSEmmanuel Vadot
6c66ec88fSEmmanuel Vadot#include <dt-bindings/thermal/thermal.h>
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadot/ {
9c66ec88fSEmmanuel Vadot	cpus {
10c66ec88fSEmmanuel Vadot		#address-cells = <1>;
11c66ec88fSEmmanuel Vadot		#size-cells = <0>;
12c66ec88fSEmmanuel Vadot
13c66ec88fSEmmanuel Vadot		cpu0: cpu@0 {
14c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
15c66ec88fSEmmanuel Vadot			device_type = "cpu";
16c66ec88fSEmmanuel Vadot			reg = <0>;
17c66ec88fSEmmanuel Vadot			enable-method = "psci";
18c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_CPUX>;
19c66ec88fSEmmanuel Vadot			clock-latency-ns = <244144>; /* 8 32k periods */
20c66ec88fSEmmanuel Vadot			#cooling-cells = <2>;
21c66ec88fSEmmanuel Vadot		};
22c66ec88fSEmmanuel Vadot
23c66ec88fSEmmanuel Vadot		cpu1: cpu@1 {
24c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
25c66ec88fSEmmanuel Vadot			device_type = "cpu";
26c66ec88fSEmmanuel Vadot			reg = <1>;
27c66ec88fSEmmanuel Vadot			enable-method = "psci";
28c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_CPUX>;
29c66ec88fSEmmanuel Vadot			clock-latency-ns = <244144>; /* 8 32k periods */
30c66ec88fSEmmanuel Vadot			#cooling-cells = <2>;
31c66ec88fSEmmanuel Vadot		};
32c66ec88fSEmmanuel Vadot
33c66ec88fSEmmanuel Vadot		cpu2: cpu@2 {
34c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
35c66ec88fSEmmanuel Vadot			device_type = "cpu";
36c66ec88fSEmmanuel Vadot			reg = <2>;
37c66ec88fSEmmanuel Vadot			enable-method = "psci";
38c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_CPUX>;
39c66ec88fSEmmanuel Vadot			clock-latency-ns = <244144>; /* 8 32k periods */
40c66ec88fSEmmanuel Vadot			#cooling-cells = <2>;
41c66ec88fSEmmanuel Vadot		};
42c66ec88fSEmmanuel Vadot
43c66ec88fSEmmanuel Vadot		cpu3: cpu@3 {
44c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
45c66ec88fSEmmanuel Vadot			device_type = "cpu";
46c66ec88fSEmmanuel Vadot			reg = <3>;
47c66ec88fSEmmanuel Vadot			enable-method = "psci";
48c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_CPUX>;
49c66ec88fSEmmanuel Vadot			clock-latency-ns = <244144>; /* 8 32k periods */
50c66ec88fSEmmanuel Vadot			#cooling-cells = <2>;
51c66ec88fSEmmanuel Vadot		};
52c66ec88fSEmmanuel Vadot	};
53c66ec88fSEmmanuel Vadot
54c66ec88fSEmmanuel Vadot	pmu {
55c66ec88fSEmmanuel Vadot		compatible = "arm,cortex-a53-pmu";
56c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
57c66ec88fSEmmanuel Vadot			     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
58c66ec88fSEmmanuel Vadot			     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
59c66ec88fSEmmanuel Vadot			     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
60c66ec88fSEmmanuel Vadot		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
61c66ec88fSEmmanuel Vadot	};
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot	psci {
64c66ec88fSEmmanuel Vadot		compatible = "arm,psci-0.2";
65c66ec88fSEmmanuel Vadot		method = "smc";
66c66ec88fSEmmanuel Vadot	};
67c66ec88fSEmmanuel Vadot
68c66ec88fSEmmanuel Vadot	timer {
69c66ec88fSEmmanuel Vadot		compatible = "arm,armv8-timer";
706be33864SEmmanuel Vadot		arm,no-tick-in-suspend;
71c66ec88fSEmmanuel Vadot		interrupts = <GIC_PPI 13
72c66ec88fSEmmanuel Vadot				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
73c66ec88fSEmmanuel Vadot			     <GIC_PPI 14
74c66ec88fSEmmanuel Vadot				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
75c66ec88fSEmmanuel Vadot			     <GIC_PPI 11
76c66ec88fSEmmanuel Vadot				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
77c66ec88fSEmmanuel Vadot			     <GIC_PPI 10
78c66ec88fSEmmanuel Vadot				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
79c66ec88fSEmmanuel Vadot	};
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot	soc {
82c66ec88fSEmmanuel Vadot		syscon: system-control@1c00000 {
83c66ec88fSEmmanuel Vadot			compatible = "allwinner,sun50i-h5-system-control";
84c66ec88fSEmmanuel Vadot			reg = <0x01c00000 0x1000>;
85c66ec88fSEmmanuel Vadot			#address-cells = <1>;
86c66ec88fSEmmanuel Vadot			#size-cells = <1>;
87c66ec88fSEmmanuel Vadot			ranges;
88c66ec88fSEmmanuel Vadot
89c66ec88fSEmmanuel Vadot			sram_c1: sram@18000 {
90c66ec88fSEmmanuel Vadot				compatible = "mmio-sram";
91c66ec88fSEmmanuel Vadot				reg = <0x00018000 0x1c000>;
92c66ec88fSEmmanuel Vadot				#address-cells = <1>;
93c66ec88fSEmmanuel Vadot				#size-cells = <1>;
94c66ec88fSEmmanuel Vadot				ranges = <0 0x00018000 0x1c000>;
95c66ec88fSEmmanuel Vadot
96c66ec88fSEmmanuel Vadot				ve_sram: sram-section@0 {
97c66ec88fSEmmanuel Vadot					compatible = "allwinner,sun50i-h5-sram-c1",
98c66ec88fSEmmanuel Vadot						     "allwinner,sun4i-a10-sram-c1";
99c66ec88fSEmmanuel Vadot					reg = <0x000000 0x1c000>;
100c66ec88fSEmmanuel Vadot				};
101c66ec88fSEmmanuel Vadot			};
102c66ec88fSEmmanuel Vadot		};
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot		video-codec@1c0e000 {
105c66ec88fSEmmanuel Vadot			compatible = "allwinner,sun50i-h5-video-engine";
106c66ec88fSEmmanuel Vadot			reg = <0x01c0e000 0x1000>;
107c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
108c66ec88fSEmmanuel Vadot				 <&ccu CLK_DRAM_VE>;
109c66ec88fSEmmanuel Vadot			clock-names = "ahb", "mod", "ram";
110c66ec88fSEmmanuel Vadot			resets = <&ccu RST_BUS_VE>;
111c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
112c66ec88fSEmmanuel Vadot			allwinner,sram = <&ve_sram 1>;
113c66ec88fSEmmanuel Vadot		};
114c66ec88fSEmmanuel Vadot
115c66ec88fSEmmanuel Vadot		crypto: crypto@1c15000 {
116c66ec88fSEmmanuel Vadot			compatible = "allwinner,sun50i-h5-crypto";
117c66ec88fSEmmanuel Vadot			reg = <0x01c15000 0x1000>;
118c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
119c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
120c66ec88fSEmmanuel Vadot			clock-names = "bus", "mod";
121c66ec88fSEmmanuel Vadot			resets = <&ccu RST_BUS_CE>;
122c66ec88fSEmmanuel Vadot		};
123c66ec88fSEmmanuel Vadot
1245def4c47SEmmanuel Vadot		deinterlace: deinterlace@1e00000 {
1255def4c47SEmmanuel Vadot			compatible = "allwinner,sun8i-h3-deinterlace";
1265def4c47SEmmanuel Vadot			reg = <0x01e00000 0x20000>;
1275def4c47SEmmanuel Vadot			clocks = <&ccu CLK_BUS_DEINTERLACE>,
1285def4c47SEmmanuel Vadot				 <&ccu CLK_DEINTERLACE>,
1295def4c47SEmmanuel Vadot				 <&ccu CLK_DRAM_DEINTERLACE>;
1305def4c47SEmmanuel Vadot			clock-names = "bus", "mod", "ram";
1315def4c47SEmmanuel Vadot			resets = <&ccu RST_BUS_DEINTERLACE>;
1325def4c47SEmmanuel Vadot			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1335def4c47SEmmanuel Vadot			interconnects = <&mbus 9>;
1345def4c47SEmmanuel Vadot			interconnect-names = "dma-mem";
1355def4c47SEmmanuel Vadot		};
1365def4c47SEmmanuel Vadot
137c66ec88fSEmmanuel Vadot		mali: gpu@1e80000 {
138c66ec88fSEmmanuel Vadot			compatible = "allwinner,sun50i-h5-mali", "arm,mali-450";
139c66ec88fSEmmanuel Vadot			reg = <0x01e80000 0x30000>;
140c66ec88fSEmmanuel Vadot			/*
141c66ec88fSEmmanuel Vadot			 * While the datasheet lists an interrupt for the
142c66ec88fSEmmanuel Vadot			 * PMU, the actual silicon does not have the PMU
143c66ec88fSEmmanuel Vadot			 * block. Reads all return zero, and writes are
144c66ec88fSEmmanuel Vadot			 * ignored.
145c66ec88fSEmmanuel Vadot			 */
146c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
147c66ec88fSEmmanuel Vadot				     <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
148c66ec88fSEmmanuel Vadot				     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
149c66ec88fSEmmanuel Vadot				     <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
150c66ec88fSEmmanuel Vadot				     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
151c66ec88fSEmmanuel Vadot				     <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
152c66ec88fSEmmanuel Vadot				     <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
153c66ec88fSEmmanuel Vadot				     <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
154c66ec88fSEmmanuel Vadot				     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
155c66ec88fSEmmanuel Vadot				     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
1566be33864SEmmanuel Vadot				     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
157c66ec88fSEmmanuel Vadot			interrupt-names = "gp",
158c66ec88fSEmmanuel Vadot					  "gpmmu",
159c66ec88fSEmmanuel Vadot					  "pp",
160c66ec88fSEmmanuel Vadot					  "pp0",
161c66ec88fSEmmanuel Vadot					  "ppmmu0",
162c66ec88fSEmmanuel Vadot					  "pp1",
163c66ec88fSEmmanuel Vadot					  "ppmmu1",
164c66ec88fSEmmanuel Vadot					  "pp2",
165c66ec88fSEmmanuel Vadot					  "ppmmu2",
166c66ec88fSEmmanuel Vadot					  "pp3",
1676be33864SEmmanuel Vadot					  "ppmmu3";
168c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
169c66ec88fSEmmanuel Vadot			clock-names = "bus", "core";
170c66ec88fSEmmanuel Vadot			resets = <&ccu RST_BUS_GPU>;
171c66ec88fSEmmanuel Vadot
172c66ec88fSEmmanuel Vadot			assigned-clocks = <&ccu CLK_GPU>;
173c66ec88fSEmmanuel Vadot			assigned-clock-rates = <384000000>;
174c66ec88fSEmmanuel Vadot		};
175c66ec88fSEmmanuel Vadot
176c66ec88fSEmmanuel Vadot		ths: thermal-sensor@1c25000 {
177c66ec88fSEmmanuel Vadot			compatible = "allwinner,sun50i-h5-ths";
178c66ec88fSEmmanuel Vadot			reg = <0x01c25000 0x400>;
179c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
180c66ec88fSEmmanuel Vadot			resets = <&ccu RST_BUS_THS>;
181c66ec88fSEmmanuel Vadot			clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
182c66ec88fSEmmanuel Vadot			clock-names = "bus", "mod";
183c66ec88fSEmmanuel Vadot			nvmem-cells = <&ths_calibration>;
184c66ec88fSEmmanuel Vadot			nvmem-cell-names = "calibration";
185c66ec88fSEmmanuel Vadot			#thermal-sensor-cells = <1>;
186c66ec88fSEmmanuel Vadot		};
187c66ec88fSEmmanuel Vadot	};
188c66ec88fSEmmanuel Vadot
189c66ec88fSEmmanuel Vadot	thermal-zones {
190c66ec88fSEmmanuel Vadot		cpu_thermal: cpu-thermal {
191c66ec88fSEmmanuel Vadot			polling-delay-passive = <0>;
192c66ec88fSEmmanuel Vadot			polling-delay = <0>;
193c66ec88fSEmmanuel Vadot			thermal-sensors = <&ths 0>;
194c66ec88fSEmmanuel Vadot
195c66ec88fSEmmanuel Vadot			trips {
196c66ec88fSEmmanuel Vadot				cpu_hot_trip: cpu-hot {
197c66ec88fSEmmanuel Vadot					temperature = <80000>;
198c66ec88fSEmmanuel Vadot					hysteresis = <2000>;
199c66ec88fSEmmanuel Vadot					type = "passive";
200c66ec88fSEmmanuel Vadot				};
201c66ec88fSEmmanuel Vadot
202c66ec88fSEmmanuel Vadot				cpu_very_hot_trip: cpu-very-hot {
203c66ec88fSEmmanuel Vadot					temperature = <100000>;
204c66ec88fSEmmanuel Vadot					hysteresis = <0>;
205c66ec88fSEmmanuel Vadot					type = "critical";
206c66ec88fSEmmanuel Vadot				};
207c66ec88fSEmmanuel Vadot			};
208c66ec88fSEmmanuel Vadot
209c66ec88fSEmmanuel Vadot			cooling-maps {
210c66ec88fSEmmanuel Vadot				cpu-hot-limit {
211c66ec88fSEmmanuel Vadot					trip = <&cpu_hot_trip>;
212c66ec88fSEmmanuel Vadot					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
213c66ec88fSEmmanuel Vadot							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
214c66ec88fSEmmanuel Vadot							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
215c66ec88fSEmmanuel Vadot							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
216c66ec88fSEmmanuel Vadot				};
217c66ec88fSEmmanuel Vadot			};
218c66ec88fSEmmanuel Vadot		};
219c66ec88fSEmmanuel Vadot
2208cc087a1SEmmanuel Vadot		gpu-thermal {
221c66ec88fSEmmanuel Vadot			polling-delay-passive = <0>;
222c66ec88fSEmmanuel Vadot			polling-delay = <0>;
223c66ec88fSEmmanuel Vadot			thermal-sensors = <&ths 1>;
224c66ec88fSEmmanuel Vadot		};
225c66ec88fSEmmanuel Vadot	};
226c66ec88fSEmmanuel Vadot};
227c66ec88fSEmmanuel Vadot
228c66ec88fSEmmanuel Vadot&ccu {
229c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-ccu";
230c66ec88fSEmmanuel Vadot};
231c66ec88fSEmmanuel Vadot
232c66ec88fSEmmanuel Vadot&display_clocks {
233c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-de2-clk";
234c66ec88fSEmmanuel Vadot};
235c66ec88fSEmmanuel Vadot
236e67e8565SEmmanuel Vadot&mbus {
237e67e8565SEmmanuel Vadot	compatible = "allwinner,sun50i-h5-mbus";
238e67e8565SEmmanuel Vadot};
239e67e8565SEmmanuel Vadot
240c66ec88fSEmmanuel Vadot&mmc0 {
241c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-mmc",
242c66ec88fSEmmanuel Vadot		     "allwinner,sun50i-a64-mmc";
243c66ec88fSEmmanuel Vadot	clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
244c66ec88fSEmmanuel Vadot	clock-names = "ahb", "mmc";
245c66ec88fSEmmanuel Vadot};
246c66ec88fSEmmanuel Vadot
247c66ec88fSEmmanuel Vadot&mmc1 {
248c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-mmc",
249c66ec88fSEmmanuel Vadot		     "allwinner,sun50i-a64-mmc";
250c66ec88fSEmmanuel Vadot	clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
251c66ec88fSEmmanuel Vadot	clock-names = "ahb", "mmc";
252c66ec88fSEmmanuel Vadot};
253c66ec88fSEmmanuel Vadot
254c66ec88fSEmmanuel Vadot&mmc2 {
255c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-emmc",
256c66ec88fSEmmanuel Vadot		     "allwinner,sun50i-a64-emmc";
257c66ec88fSEmmanuel Vadot	clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
258c66ec88fSEmmanuel Vadot	clock-names = "ahb", "mmc";
259c66ec88fSEmmanuel Vadot};
260c66ec88fSEmmanuel Vadot
261c66ec88fSEmmanuel Vadot&pio {
262c66ec88fSEmmanuel Vadot	interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
263c66ec88fSEmmanuel Vadot		     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
264c66ec88fSEmmanuel Vadot		     <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
265c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-pinctrl";
266c66ec88fSEmmanuel Vadot};
267c66ec88fSEmmanuel Vadot
268c66ec88fSEmmanuel Vadot&rtc {
269c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-rtc";
270c66ec88fSEmmanuel Vadot};
271c66ec88fSEmmanuel Vadot
272c66ec88fSEmmanuel Vadot&sid {
273c66ec88fSEmmanuel Vadot	compatible = "allwinner,sun50i-h5-sid";
274c66ec88fSEmmanuel Vadot};
275