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