xref: /freebsd/sys/contrib/device-tree/src/arm64/exynos/exynos990.dtsi (revision 2846c90520eb4cc74e24d586a0ea0f4a0006bc73)
15f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
25f62a964SEmmanuel Vadot/*
35f62a964SEmmanuel Vadot * Samsung Exynos 990 SoC device tree source
45f62a964SEmmanuel Vadot *
55f62a964SEmmanuel Vadot * Copyright (c) 2024, Igor Belwon <igor.belwon@mentallysanemainliners.org>
65f62a964SEmmanuel Vadot */
75f62a964SEmmanuel Vadot
8*2846c905SEmmanuel Vadot#include <dt-bindings/clock/samsung,exynos990.h>
95f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
105f62a964SEmmanuel Vadot
115f62a964SEmmanuel Vadot/ {
125f62a964SEmmanuel Vadot	compatible = "samsung,exynos990";
135f62a964SEmmanuel Vadot	#address-cells = <2>;
145f62a964SEmmanuel Vadot	#size-cells = <1>;
155f62a964SEmmanuel Vadot
165f62a964SEmmanuel Vadot	interrupt-parent = <&gic>;
175f62a964SEmmanuel Vadot
185f62a964SEmmanuel Vadot	aliases {
195f62a964SEmmanuel Vadot		pinctrl0 = &pinctrl_alive;
205f62a964SEmmanuel Vadot		pinctrl1 = &pinctrl_cmgp;
215f62a964SEmmanuel Vadot		pinctrl2 = &pinctrl_hsi1;
225f62a964SEmmanuel Vadot		pinctrl3 = &pinctrl_hsi2;
235f62a964SEmmanuel Vadot		pinctrl4 = &pinctrl_peric0;
245f62a964SEmmanuel Vadot		pinctrl5 = &pinctrl_peric1;
255f62a964SEmmanuel Vadot		pinctrl6 = &pinctrl_vts;
265f62a964SEmmanuel Vadot	};
275f62a964SEmmanuel Vadot
285f62a964SEmmanuel Vadot	arm-a55-pmu {
295f62a964SEmmanuel Vadot		compatible = "arm,cortex-a55-pmu";
305f62a964SEmmanuel Vadot		interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
315f62a964SEmmanuel Vadot			     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
325f62a964SEmmanuel Vadot			     <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
335f62a964SEmmanuel Vadot			     <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
345f62a964SEmmanuel Vadot
355f62a964SEmmanuel Vadot		interrupt-affinity = <&cpu0>,
365f62a964SEmmanuel Vadot				     <&cpu1>,
375f62a964SEmmanuel Vadot				     <&cpu2>,
385f62a964SEmmanuel Vadot				     <&cpu3>;
395f62a964SEmmanuel Vadot	};
405f62a964SEmmanuel Vadot
415f62a964SEmmanuel Vadot	arm-a76-pmu {
425f62a964SEmmanuel Vadot		compatible = "arm,cortex-a76-pmu";
435f62a964SEmmanuel Vadot		interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
445f62a964SEmmanuel Vadot			     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
455f62a964SEmmanuel Vadot
465f62a964SEmmanuel Vadot		interrupt-affinity = <&cpu4>,
475f62a964SEmmanuel Vadot				     <&cpu5>;
485f62a964SEmmanuel Vadot	};
495f62a964SEmmanuel Vadot
50*2846c905SEmmanuel Vadot	mongoose-m5-pmu {
51*2846c905SEmmanuel Vadot		compatible = "samsung,mongoose-pmu";
52*2846c905SEmmanuel Vadot		interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
53*2846c905SEmmanuel Vadot			     <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
54*2846c905SEmmanuel Vadot
55*2846c905SEmmanuel Vadot		interrupt-affinity = <&cpu6>,
56*2846c905SEmmanuel Vadot				     <&cpu7>;
57*2846c905SEmmanuel Vadot	};
585f62a964SEmmanuel Vadot
595f62a964SEmmanuel Vadot	cpus {
605f62a964SEmmanuel Vadot		#address-cells = <1>;
615f62a964SEmmanuel Vadot		#size-cells = <0>;
625f62a964SEmmanuel Vadot
635f62a964SEmmanuel Vadot		cpu-map {
645f62a964SEmmanuel Vadot			cluster0 {
655f62a964SEmmanuel Vadot				core0 {
665f62a964SEmmanuel Vadot					cpu = <&cpu0>;
675f62a964SEmmanuel Vadot				};
685f62a964SEmmanuel Vadot
695f62a964SEmmanuel Vadot				core1 {
705f62a964SEmmanuel Vadot					cpu = <&cpu1>;
715f62a964SEmmanuel Vadot				};
725f62a964SEmmanuel Vadot
735f62a964SEmmanuel Vadot				core2 {
745f62a964SEmmanuel Vadot					cpu = <&cpu2>;
755f62a964SEmmanuel Vadot				};
765f62a964SEmmanuel Vadot
775f62a964SEmmanuel Vadot				core3 {
785f62a964SEmmanuel Vadot					cpu = <&cpu3>;
795f62a964SEmmanuel Vadot				};
805f62a964SEmmanuel Vadot			};
815f62a964SEmmanuel Vadot
825f62a964SEmmanuel Vadot			cluster1 {
835f62a964SEmmanuel Vadot				core0 {
845f62a964SEmmanuel Vadot					cpu = <&cpu4>;
855f62a964SEmmanuel Vadot				};
865f62a964SEmmanuel Vadot
875f62a964SEmmanuel Vadot				core1 {
885f62a964SEmmanuel Vadot					cpu = <&cpu5>;
895f62a964SEmmanuel Vadot				};
905f62a964SEmmanuel Vadot			};
915f62a964SEmmanuel Vadot
925f62a964SEmmanuel Vadot			cluster2 {
935f62a964SEmmanuel Vadot				core0 {
945f62a964SEmmanuel Vadot					cpu = <&cpu6>;
955f62a964SEmmanuel Vadot				};
965f62a964SEmmanuel Vadot
975f62a964SEmmanuel Vadot				core1 {
985f62a964SEmmanuel Vadot					cpu = <&cpu7>;
995f62a964SEmmanuel Vadot				};
1005f62a964SEmmanuel Vadot			};
1015f62a964SEmmanuel Vadot		};
1025f62a964SEmmanuel Vadot
1035f62a964SEmmanuel Vadot		cpu0: cpu@0 {
1045f62a964SEmmanuel Vadot			device_type = "cpu";
1055f62a964SEmmanuel Vadot			compatible = "arm,cortex-a55";
1065f62a964SEmmanuel Vadot			reg = <0x0>;
1075f62a964SEmmanuel Vadot			enable-method = "psci";
1085f62a964SEmmanuel Vadot		};
1095f62a964SEmmanuel Vadot
1105f62a964SEmmanuel Vadot		cpu1: cpu@1 {
1115f62a964SEmmanuel Vadot			device_type = "cpu";
1125f62a964SEmmanuel Vadot			compatible = "arm,cortex-a55";
1135f62a964SEmmanuel Vadot			reg = <0x1>;
1145f62a964SEmmanuel Vadot			enable-method = "psci";
1155f62a964SEmmanuel Vadot		};
1165f62a964SEmmanuel Vadot
1175f62a964SEmmanuel Vadot		cpu2: cpu@2 {
1185f62a964SEmmanuel Vadot			device_type = "cpu";
1195f62a964SEmmanuel Vadot			compatible = "arm,cortex-a55";
1205f62a964SEmmanuel Vadot			reg = <0x2>;
1215f62a964SEmmanuel Vadot			enable-method = "psci";
1225f62a964SEmmanuel Vadot		};
1235f62a964SEmmanuel Vadot
1245f62a964SEmmanuel Vadot		cpu3: cpu@3 {
1255f62a964SEmmanuel Vadot			device_type = "cpu";
1265f62a964SEmmanuel Vadot			compatible = "arm,cortex-a55";
1275f62a964SEmmanuel Vadot			reg = <0x3>;
1285f62a964SEmmanuel Vadot			enable-method = "psci";
1295f62a964SEmmanuel Vadot		};
1305f62a964SEmmanuel Vadot
1315f62a964SEmmanuel Vadot		cpu4: cpu@100 {
1325f62a964SEmmanuel Vadot			device_type = "cpu";
1335f62a964SEmmanuel Vadot			compatible = "arm,cortex-a76";
1345f62a964SEmmanuel Vadot			reg = <0x4>;
1355f62a964SEmmanuel Vadot			enable-method = "psci";
1365f62a964SEmmanuel Vadot		};
1375f62a964SEmmanuel Vadot
1385f62a964SEmmanuel Vadot		cpu5: cpu@101 {
1395f62a964SEmmanuel Vadot			device_type = "cpu";
1405f62a964SEmmanuel Vadot			compatible = "arm,cortex-a76";
1415f62a964SEmmanuel Vadot			reg = <0x5>;
1425f62a964SEmmanuel Vadot			enable-method = "psci";
1435f62a964SEmmanuel Vadot		};
1445f62a964SEmmanuel Vadot
1455f62a964SEmmanuel Vadot		cpu6: cpu@200 {
1465f62a964SEmmanuel Vadot			device_type = "cpu";
1475f62a964SEmmanuel Vadot			compatible = "samsung,mongoose-m5";
1485f62a964SEmmanuel Vadot			reg = <0x6>;
1495f62a964SEmmanuel Vadot			enable-method = "psci";
1505f62a964SEmmanuel Vadot		};
1515f62a964SEmmanuel Vadot
1525f62a964SEmmanuel Vadot		cpu7: cpu@201 {
1535f62a964SEmmanuel Vadot			device_type = "cpu";
1545f62a964SEmmanuel Vadot			compatible = "samsung,mongoose-m5";
1555f62a964SEmmanuel Vadot			reg = <0x7>;
1565f62a964SEmmanuel Vadot			enable-method = "psci";
1575f62a964SEmmanuel Vadot		};
1585f62a964SEmmanuel Vadot	};
1595f62a964SEmmanuel Vadot
1605f62a964SEmmanuel Vadot	oscclk: clock-osc {
1615f62a964SEmmanuel Vadot		compatible = "fixed-clock";
1625f62a964SEmmanuel Vadot		#clock-cells = <0>;
1635f62a964SEmmanuel Vadot		clock-output-names = "oscclk";
1645f62a964SEmmanuel Vadot	};
1655f62a964SEmmanuel Vadot
1665f62a964SEmmanuel Vadot	psci {
1675f62a964SEmmanuel Vadot		compatible = "arm,psci-0.2";
1685f62a964SEmmanuel Vadot		method = "hvc";
1695f62a964SEmmanuel Vadot	};
1705f62a964SEmmanuel Vadot
1715f62a964SEmmanuel Vadot	soc: soc@0 {
1725f62a964SEmmanuel Vadot		compatible = "simple-bus";
1735f62a964SEmmanuel Vadot		ranges = <0x0 0x0 0x0 0x20000000>;
1745f62a964SEmmanuel Vadot
1755f62a964SEmmanuel Vadot		#address-cells = <1>;
1765f62a964SEmmanuel Vadot		#size-cells = <1>;
1775f62a964SEmmanuel Vadot
1785f62a964SEmmanuel Vadot		chipid@10000000 {
1795f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-chipid",
1805f62a964SEmmanuel Vadot				     "samsung,exynos850-chipid";
1815f62a964SEmmanuel Vadot			reg = <0x10000000 0x100>;
1825f62a964SEmmanuel Vadot		};
1835f62a964SEmmanuel Vadot
1845f62a964SEmmanuel Vadot		gic: interrupt-controller@10101000 {
1855f62a964SEmmanuel Vadot			compatible = "arm,gic-400";
1865f62a964SEmmanuel Vadot			reg = <0x10101000 0x1000>,
1875f62a964SEmmanuel Vadot			      <0x10102000 0x1000>,
1885f62a964SEmmanuel Vadot			      <0x10104000 0x2000>,
1895f62a964SEmmanuel Vadot			      <0x10106000 0x2000>;
1905f62a964SEmmanuel Vadot			#interrupt-cells = <3>;
1915f62a964SEmmanuel Vadot			interrupt-controller;
1925f62a964SEmmanuel Vadot			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
1935f62a964SEmmanuel Vadot						 IRQ_TYPE_LEVEL_HIGH)>;
1945f62a964SEmmanuel Vadot			#address-cells = <0>;
1955f62a964SEmmanuel Vadot			#size-cells = <1>;
1965f62a964SEmmanuel Vadot		};
1975f62a964SEmmanuel Vadot
1985f62a964SEmmanuel Vadot		pinctrl_peric0: pinctrl@10430000 {
1995f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2005f62a964SEmmanuel Vadot			reg = <0x10430000 0x1000>;
2015f62a964SEmmanuel Vadot			interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
2025f62a964SEmmanuel Vadot		};
2035f62a964SEmmanuel Vadot
2045f62a964SEmmanuel Vadot		pinctrl_peric1: pinctrl@10730000 {
2055f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2065f62a964SEmmanuel Vadot			reg = <0x10730000 0x1000>;
2075f62a964SEmmanuel Vadot			interrupts = <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>;
2085f62a964SEmmanuel Vadot		};
2095f62a964SEmmanuel Vadot
210*2846c905SEmmanuel Vadot		cmu_hsi0: clock-controller@10a00000 {
211*2846c905SEmmanuel Vadot			compatible = "samsung,exynos990-cmu-hsi0";
212*2846c905SEmmanuel Vadot			reg = <0x10a00000 0x8000>;
213*2846c905SEmmanuel Vadot			#clock-cells = <1>;
214*2846c905SEmmanuel Vadot
215*2846c905SEmmanuel Vadot			clocks = <&oscclk>,
216*2846c905SEmmanuel Vadot				 <&cmu_top CLK_DOUT_CMU_HSI0_BUS>,
217*2846c905SEmmanuel Vadot				 <&cmu_top CLK_DOUT_CMU_HSI0_USB31DRD>,
218*2846c905SEmmanuel Vadot				 <&cmu_top CLK_DOUT_CMU_HSI0_USBDP_DEBUG>,
219*2846c905SEmmanuel Vadot				 <&cmu_top CLK_DOUT_CMU_HSI0_DPGTC>;
220*2846c905SEmmanuel Vadot			clock-names = "oscclk",
221*2846c905SEmmanuel Vadot				      "bus",
222*2846c905SEmmanuel Vadot				      "usb31drd",
223*2846c905SEmmanuel Vadot				      "usbdp_debug",
224*2846c905SEmmanuel Vadot				      "dpgtc";
225*2846c905SEmmanuel Vadot		};
226*2846c905SEmmanuel Vadot
2275f62a964SEmmanuel Vadot		pinctrl_hsi1: pinctrl@13040000 {
2285f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2295f62a964SEmmanuel Vadot			reg = <0x13040000 0x1000>;
2305f62a964SEmmanuel Vadot			interrupts = <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>;
2315f62a964SEmmanuel Vadot		};
2325f62a964SEmmanuel Vadot
2335f62a964SEmmanuel Vadot		pinctrl_hsi2: pinctrl@13c30000 {
2345f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2355f62a964SEmmanuel Vadot			reg = <0x13c30000 0x1000>;
2365f62a964SEmmanuel Vadot			interrupts = <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>;
2375f62a964SEmmanuel Vadot		};
2385f62a964SEmmanuel Vadot
2395f62a964SEmmanuel Vadot		pinctrl_vts: pinctrl@15580000 {
2405f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2415f62a964SEmmanuel Vadot			reg = <0x15580000 0x1000>;
2425f62a964SEmmanuel Vadot		};
2435f62a964SEmmanuel Vadot
2445f62a964SEmmanuel Vadot		pinctrl_alive: pinctrl@15850000 {
2455f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2465f62a964SEmmanuel Vadot			reg = <0x15850000 0x1000>;
2475f62a964SEmmanuel Vadot
2485f62a964SEmmanuel Vadot			wakeup-interrupt-controller {
2495f62a964SEmmanuel Vadot				compatible = "samsung,exynos990-wakeup-eint",
2505f62a964SEmmanuel Vadot					     "samsung,exynos850-wakeup-eint",
2515f62a964SEmmanuel Vadot					     "samsung,exynos7-wakeup-eint";
2525f62a964SEmmanuel Vadot			};
2535f62a964SEmmanuel Vadot		};
2545f62a964SEmmanuel Vadot
255*2846c905SEmmanuel Vadot		pmu_system_controller: system-controller@15860000 {
256*2846c905SEmmanuel Vadot			compatible = "samsung,exynos990-pmu",
257*2846c905SEmmanuel Vadot				     "samsung,exynos7-pmu", "syscon";
258*2846c905SEmmanuel Vadot			reg = <0x15860000 0x10000>;
259*2846c905SEmmanuel Vadot
260*2846c905SEmmanuel Vadot			reboot: syscon-reboot {
261*2846c905SEmmanuel Vadot				compatible = "syscon-reboot";
262*2846c905SEmmanuel Vadot				regmap = <&pmu_system_controller>;
263*2846c905SEmmanuel Vadot				offset = <0x3a00>; /* SWRESET */
264*2846c905SEmmanuel Vadot				mask = <0x2>; /* SWRESET_TRIGGER */
265*2846c905SEmmanuel Vadot				value = <0x2>;
266*2846c905SEmmanuel Vadot			};
267*2846c905SEmmanuel Vadot		};
268*2846c905SEmmanuel Vadot
2695f62a964SEmmanuel Vadot		pinctrl_cmgp: pinctrl@15c30000 {
2705f62a964SEmmanuel Vadot			compatible = "samsung,exynos990-pinctrl";
2715f62a964SEmmanuel Vadot			reg = <0x15c30000 0x1000>;
2725f62a964SEmmanuel Vadot		};
273*2846c905SEmmanuel Vadot
274*2846c905SEmmanuel Vadot		cmu_top: clock-controller@1a330000 {
275*2846c905SEmmanuel Vadot			compatible = "samsung,exynos990-cmu-top";
276*2846c905SEmmanuel Vadot			reg = <0x1a330000 0x8000>;
277*2846c905SEmmanuel Vadot			#clock-cells = <1>;
278*2846c905SEmmanuel Vadot
279*2846c905SEmmanuel Vadot			clocks = <&oscclk>;
280*2846c905SEmmanuel Vadot			clock-names = "oscclk";
281*2846c905SEmmanuel Vadot		};
2825f62a964SEmmanuel Vadot	};
2835f62a964SEmmanuel Vadot
2845f62a964SEmmanuel Vadot	timer {
2855f62a964SEmmanuel Vadot		compatible = "arm,armv8-timer";
2865f62a964SEmmanuel Vadot		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
2875f62a964SEmmanuel Vadot			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
2885f62a964SEmmanuel Vadot			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
2895f62a964SEmmanuel Vadot			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
2905f62a964SEmmanuel Vadot
2915f62a964SEmmanuel Vadot		/*
2925f62a964SEmmanuel Vadot		 * Non-updatable, broken stock Samsung bootloader does not
2935f62a964SEmmanuel Vadot		 * configure CNTFRQ_EL0
2945f62a964SEmmanuel Vadot		 */
2955f62a964SEmmanuel Vadot		clock-frequency = <26000000>;
2965f62a964SEmmanuel Vadot	};
2975f62a964SEmmanuel Vadot};
2985f62a964SEmmanuel Vadot
2995f62a964SEmmanuel Vadot#include "exynos990-pinctrl.dtsi"
300