162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
262306a36Sopenharmony_ci// Copyright (C) 2016 ARM Ltd.
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include <arm/allwinner/sunxi-h3-h5.dtsi>
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <dt-bindings/thermal/thermal.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/ {
962306a36Sopenharmony_ci	cpus {
1062306a36Sopenharmony_ci		#address-cells = <1>;
1162306a36Sopenharmony_ci		#size-cells = <0>;
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci		cpu0: cpu@0 {
1462306a36Sopenharmony_ci			compatible = "arm,cortex-a53";
1562306a36Sopenharmony_ci			device_type = "cpu";
1662306a36Sopenharmony_ci			reg = <0>;
1762306a36Sopenharmony_ci			enable-method = "psci";
1862306a36Sopenharmony_ci			clocks = <&ccu CLK_CPUX>;
1962306a36Sopenharmony_ci			clock-latency-ns = <244144>; /* 8 32k periods */
2062306a36Sopenharmony_ci			#cooling-cells = <2>;
2162306a36Sopenharmony_ci		};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci		cpu1: cpu@1 {
2462306a36Sopenharmony_ci			compatible = "arm,cortex-a53";
2562306a36Sopenharmony_ci			device_type = "cpu";
2662306a36Sopenharmony_ci			reg = <1>;
2762306a36Sopenharmony_ci			enable-method = "psci";
2862306a36Sopenharmony_ci			clocks = <&ccu CLK_CPUX>;
2962306a36Sopenharmony_ci			clock-latency-ns = <244144>; /* 8 32k periods */
3062306a36Sopenharmony_ci			#cooling-cells = <2>;
3162306a36Sopenharmony_ci		};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci		cpu2: cpu@2 {
3462306a36Sopenharmony_ci			compatible = "arm,cortex-a53";
3562306a36Sopenharmony_ci			device_type = "cpu";
3662306a36Sopenharmony_ci			reg = <2>;
3762306a36Sopenharmony_ci			enable-method = "psci";
3862306a36Sopenharmony_ci			clocks = <&ccu CLK_CPUX>;
3962306a36Sopenharmony_ci			clock-latency-ns = <244144>; /* 8 32k periods */
4062306a36Sopenharmony_ci			#cooling-cells = <2>;
4162306a36Sopenharmony_ci		};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci		cpu3: cpu@3 {
4462306a36Sopenharmony_ci			compatible = "arm,cortex-a53";
4562306a36Sopenharmony_ci			device_type = "cpu";
4662306a36Sopenharmony_ci			reg = <3>;
4762306a36Sopenharmony_ci			enable-method = "psci";
4862306a36Sopenharmony_ci			clocks = <&ccu CLK_CPUX>;
4962306a36Sopenharmony_ci			clock-latency-ns = <244144>; /* 8 32k periods */
5062306a36Sopenharmony_ci			#cooling-cells = <2>;
5162306a36Sopenharmony_ci		};
5262306a36Sopenharmony_ci	};
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	pmu {
5562306a36Sopenharmony_ci		compatible = "arm,cortex-a53-pmu";
5662306a36Sopenharmony_ci		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
5762306a36Sopenharmony_ci			     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
5862306a36Sopenharmony_ci			     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
5962306a36Sopenharmony_ci			     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
6062306a36Sopenharmony_ci		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
6162306a36Sopenharmony_ci	};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci	psci {
6462306a36Sopenharmony_ci		compatible = "arm,psci-0.2";
6562306a36Sopenharmony_ci		method = "smc";
6662306a36Sopenharmony_ci	};
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci	timer {
6962306a36Sopenharmony_ci		compatible = "arm,armv8-timer";
7062306a36Sopenharmony_ci		arm,no-tick-in-suspend;
7162306a36Sopenharmony_ci		interrupts = <GIC_PPI 13
7262306a36Sopenharmony_ci				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
7362306a36Sopenharmony_ci			     <GIC_PPI 14
7462306a36Sopenharmony_ci				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
7562306a36Sopenharmony_ci			     <GIC_PPI 11
7662306a36Sopenharmony_ci				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
7762306a36Sopenharmony_ci			     <GIC_PPI 10
7862306a36Sopenharmony_ci				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
7962306a36Sopenharmony_ci	};
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci	soc {
8262306a36Sopenharmony_ci		syscon: system-control@1c00000 {
8362306a36Sopenharmony_ci			compatible = "allwinner,sun50i-h5-system-control";
8462306a36Sopenharmony_ci			reg = <0x01c00000 0x1000>;
8562306a36Sopenharmony_ci			#address-cells = <1>;
8662306a36Sopenharmony_ci			#size-cells = <1>;
8762306a36Sopenharmony_ci			ranges;
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci			sram_c1: sram@18000 {
9062306a36Sopenharmony_ci				compatible = "mmio-sram";
9162306a36Sopenharmony_ci				reg = <0x00018000 0x1c000>;
9262306a36Sopenharmony_ci				#address-cells = <1>;
9362306a36Sopenharmony_ci				#size-cells = <1>;
9462306a36Sopenharmony_ci				ranges = <0 0x00018000 0x1c000>;
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci				ve_sram: sram-section@0 {
9762306a36Sopenharmony_ci					compatible = "allwinner,sun50i-h5-sram-c1",
9862306a36Sopenharmony_ci						     "allwinner,sun4i-a10-sram-c1";
9962306a36Sopenharmony_ci					reg = <0x000000 0x1c000>;
10062306a36Sopenharmony_ci				};
10162306a36Sopenharmony_ci			};
10262306a36Sopenharmony_ci		};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci		video-codec@1c0e000 {
10562306a36Sopenharmony_ci			compatible = "allwinner,sun50i-h5-video-engine";
10662306a36Sopenharmony_ci			reg = <0x01c0e000 0x1000>;
10762306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
10862306a36Sopenharmony_ci				 <&ccu CLK_DRAM_VE>;
10962306a36Sopenharmony_ci			clock-names = "ahb", "mod", "ram";
11062306a36Sopenharmony_ci			resets = <&ccu RST_BUS_VE>;
11162306a36Sopenharmony_ci			interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
11262306a36Sopenharmony_ci			allwinner,sram = <&ve_sram 1>;
11362306a36Sopenharmony_ci		};
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci		crypto: crypto@1c15000 {
11662306a36Sopenharmony_ci			compatible = "allwinner,sun50i-h5-crypto";
11762306a36Sopenharmony_ci			reg = <0x01c15000 0x1000>;
11862306a36Sopenharmony_ci			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
11962306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
12062306a36Sopenharmony_ci			clock-names = "bus", "mod";
12162306a36Sopenharmony_ci			resets = <&ccu RST_BUS_CE>;
12262306a36Sopenharmony_ci		};
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci		deinterlace: deinterlace@1e00000 {
12562306a36Sopenharmony_ci			compatible = "allwinner,sun8i-h3-deinterlace";
12662306a36Sopenharmony_ci			reg = <0x01e00000 0x20000>;
12762306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_DEINTERLACE>,
12862306a36Sopenharmony_ci				 <&ccu CLK_DEINTERLACE>,
12962306a36Sopenharmony_ci				 <&ccu CLK_DRAM_DEINTERLACE>;
13062306a36Sopenharmony_ci			clock-names = "bus", "mod", "ram";
13162306a36Sopenharmony_ci			resets = <&ccu RST_BUS_DEINTERLACE>;
13262306a36Sopenharmony_ci			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
13362306a36Sopenharmony_ci			interconnects = <&mbus 9>;
13462306a36Sopenharmony_ci			interconnect-names = "dma-mem";
13562306a36Sopenharmony_ci		};
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci		mali: gpu@1e80000 {
13862306a36Sopenharmony_ci			compatible = "allwinner,sun50i-h5-mali", "arm,mali-450";
13962306a36Sopenharmony_ci			reg = <0x01e80000 0x30000>;
14062306a36Sopenharmony_ci			/*
14162306a36Sopenharmony_ci			 * While the datasheet lists an interrupt for the
14262306a36Sopenharmony_ci			 * PMU, the actual silicon does not have the PMU
14362306a36Sopenharmony_ci			 * block. Reads all return zero, and writes are
14462306a36Sopenharmony_ci			 * ignored.
14562306a36Sopenharmony_ci			 */
14662306a36Sopenharmony_ci			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
14762306a36Sopenharmony_ci				     <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
14862306a36Sopenharmony_ci				     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
14962306a36Sopenharmony_ci				     <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
15062306a36Sopenharmony_ci				     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
15162306a36Sopenharmony_ci				     <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
15262306a36Sopenharmony_ci				     <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
15362306a36Sopenharmony_ci				     <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
15462306a36Sopenharmony_ci				     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
15562306a36Sopenharmony_ci				     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
15662306a36Sopenharmony_ci				     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
15762306a36Sopenharmony_ci			interrupt-names = "gp",
15862306a36Sopenharmony_ci					  "gpmmu",
15962306a36Sopenharmony_ci					  "pp",
16062306a36Sopenharmony_ci					  "pp0",
16162306a36Sopenharmony_ci					  "ppmmu0",
16262306a36Sopenharmony_ci					  "pp1",
16362306a36Sopenharmony_ci					  "ppmmu1",
16462306a36Sopenharmony_ci					  "pp2",
16562306a36Sopenharmony_ci					  "ppmmu2",
16662306a36Sopenharmony_ci					  "pp3",
16762306a36Sopenharmony_ci					  "ppmmu3";
16862306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
16962306a36Sopenharmony_ci			clock-names = "bus", "core";
17062306a36Sopenharmony_ci			resets = <&ccu RST_BUS_GPU>;
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci			assigned-clocks = <&ccu CLK_GPU>;
17362306a36Sopenharmony_ci			assigned-clock-rates = <384000000>;
17462306a36Sopenharmony_ci		};
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci		ths: thermal-sensor@1c25000 {
17762306a36Sopenharmony_ci			compatible = "allwinner,sun50i-h5-ths";
17862306a36Sopenharmony_ci			reg = <0x01c25000 0x400>;
17962306a36Sopenharmony_ci			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
18062306a36Sopenharmony_ci			resets = <&ccu RST_BUS_THS>;
18162306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
18262306a36Sopenharmony_ci			clock-names = "bus", "mod";
18362306a36Sopenharmony_ci			nvmem-cells = <&ths_calibration>;
18462306a36Sopenharmony_ci			nvmem-cell-names = "calibration";
18562306a36Sopenharmony_ci			#thermal-sensor-cells = <1>;
18662306a36Sopenharmony_ci		};
18762306a36Sopenharmony_ci	};
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci	thermal-zones {
19062306a36Sopenharmony_ci		cpu_thermal: cpu-thermal {
19162306a36Sopenharmony_ci			polling-delay-passive = <0>;
19262306a36Sopenharmony_ci			polling-delay = <0>;
19362306a36Sopenharmony_ci			thermal-sensors = <&ths 0>;
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci			trips {
19662306a36Sopenharmony_ci				cpu_hot_trip: cpu-hot {
19762306a36Sopenharmony_ci					temperature = <80000>;
19862306a36Sopenharmony_ci					hysteresis = <2000>;
19962306a36Sopenharmony_ci					type = "passive";
20062306a36Sopenharmony_ci				};
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci				cpu_very_hot_trip: cpu-very-hot {
20362306a36Sopenharmony_ci					temperature = <100000>;
20462306a36Sopenharmony_ci					hysteresis = <0>;
20562306a36Sopenharmony_ci					type = "critical";
20662306a36Sopenharmony_ci				};
20762306a36Sopenharmony_ci			};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci			cooling-maps {
21062306a36Sopenharmony_ci				cpu-hot-limit {
21162306a36Sopenharmony_ci					trip = <&cpu_hot_trip>;
21262306a36Sopenharmony_ci					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
21362306a36Sopenharmony_ci							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
21462306a36Sopenharmony_ci							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
21562306a36Sopenharmony_ci							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
21662306a36Sopenharmony_ci				};
21762306a36Sopenharmony_ci			};
21862306a36Sopenharmony_ci		};
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci		gpu-thermal {
22162306a36Sopenharmony_ci			polling-delay-passive = <0>;
22262306a36Sopenharmony_ci			polling-delay = <0>;
22362306a36Sopenharmony_ci			thermal-sensors = <&ths 1>;
22462306a36Sopenharmony_ci		};
22562306a36Sopenharmony_ci	};
22662306a36Sopenharmony_ci};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci&ccu {
22962306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-ccu";
23062306a36Sopenharmony_ci};
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci&display_clocks {
23362306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-de2-clk";
23462306a36Sopenharmony_ci};
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci&mbus {
23762306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-mbus";
23862306a36Sopenharmony_ci};
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci&mmc0 {
24162306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-mmc",
24262306a36Sopenharmony_ci		     "allwinner,sun50i-a64-mmc";
24362306a36Sopenharmony_ci	clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
24462306a36Sopenharmony_ci	clock-names = "ahb", "mmc";
24562306a36Sopenharmony_ci};
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci&mmc1 {
24862306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-mmc",
24962306a36Sopenharmony_ci		     "allwinner,sun50i-a64-mmc";
25062306a36Sopenharmony_ci	clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
25162306a36Sopenharmony_ci	clock-names = "ahb", "mmc";
25262306a36Sopenharmony_ci};
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci&mmc2 {
25562306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-emmc",
25662306a36Sopenharmony_ci		     "allwinner,sun50i-a64-emmc";
25762306a36Sopenharmony_ci	clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
25862306a36Sopenharmony_ci	clock-names = "ahb", "mmc";
25962306a36Sopenharmony_ci};
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci&pio {
26262306a36Sopenharmony_ci	interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
26362306a36Sopenharmony_ci		     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
26462306a36Sopenharmony_ci		     <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
26562306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-pinctrl";
26662306a36Sopenharmony_ci};
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci&rtc {
26962306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-rtc";
27062306a36Sopenharmony_ci};
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci&sid {
27362306a36Sopenharmony_ci	compatible = "allwinner,sun50i-h5-sid";
27462306a36Sopenharmony_ci};
275