xref: /linux/arch/arm64/boot/dts/exynos/axis/artpec9.dtsi (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
13ae2b744SSungMin Park// SPDX-License-Identifier: (GPL-2.0 OR MIT)
23ae2b744SSungMin Park/*
33ae2b744SSungMin Park * Axis ARTPEC-9 SoC device tree source
43ae2b744SSungMin Park *
53ae2b744SSungMin Park * Copyright (c) 2025 Samsung Electronics Co., Ltd.
63ae2b744SSungMin Park *             https://www.samsung.com
73ae2b744SSungMin Park * Copyright (c) 2025  Axis Communications AB.
83ae2b744SSungMin Park *             https://www.axis.com
93ae2b744SSungMin Park */
103ae2b744SSungMin Park
113ae2b744SSungMin Park#include <dt-bindings/interrupt-controller/arm-gic.h>
123ae2b744SSungMin Park#include <dt-bindings/clock/axis,artpec9-clk.h>
133ae2b744SSungMin Park
143ae2b744SSungMin Park/ {
153ae2b744SSungMin Park	compatible = "axis,artpec9";
163ae2b744SSungMin Park	interrupt-parent = <&gic>;
173ae2b744SSungMin Park	#address-cells = <2>;
183ae2b744SSungMin Park	#size-cells = <2>;
193ae2b744SSungMin Park
203ae2b744SSungMin Park	aliases {
213ae2b744SSungMin Park		pinctrl0 = &pinctrl_fsys0;
223ae2b744SSungMin Park		pinctrl1 = &pinctrl_fsys1;
233ae2b744SSungMin Park		pinctrl2 = &pinctrl_peric;
243ae2b744SSungMin Park	};
253ae2b744SSungMin Park
263ae2b744SSungMin Park	cpus {
273ae2b744SSungMin Park		#address-cells = <1>;
283ae2b744SSungMin Park		#size-cells = <0>;
293ae2b744SSungMin Park
303ae2b744SSungMin Park		cpu0: cpu@0 {
313ae2b744SSungMin Park			device_type = "cpu";
323ae2b744SSungMin Park			compatible = "arm,cortex-a55";
333ae2b744SSungMin Park			reg = <0x0>;
343ae2b744SSungMin Park			enable-method = "psci";
353ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
363ae2b744SSungMin Park			clocks = <&cmu_cpucl CLK_GOUT_CPUCL_CLUSTER_CPU>;
373ae2b744SSungMin Park			clock-names = "cpu";
383ae2b744SSungMin Park		};
393ae2b744SSungMin Park
403ae2b744SSungMin Park		cpu1: cpu@100 {
413ae2b744SSungMin Park			device_type = "cpu";
423ae2b744SSungMin Park			compatible = "arm,cortex-a55";
433ae2b744SSungMin Park			reg = <0x100>;
443ae2b744SSungMin Park			enable-method = "psci";
453ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
463ae2b744SSungMin Park		};
473ae2b744SSungMin Park
483ae2b744SSungMin Park		cpu2: cpu@200 {
493ae2b744SSungMin Park			device_type = "cpu";
503ae2b744SSungMin Park			compatible = "arm,cortex-a55";
513ae2b744SSungMin Park			reg = <0x200>;
523ae2b744SSungMin Park			enable-method = "psci";
533ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
543ae2b744SSungMin Park		};
553ae2b744SSungMin Park
563ae2b744SSungMin Park		cpu3: cpu@300 {
573ae2b744SSungMin Park			device_type = "cpu";
583ae2b744SSungMin Park			compatible = "arm,cortex-a55";
593ae2b744SSungMin Park			reg = <0x300>;
603ae2b744SSungMin Park			enable-method = "psci";
613ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
623ae2b744SSungMin Park		};
633ae2b744SSungMin Park
643ae2b744SSungMin Park		cpu4: cpu@400 {
653ae2b744SSungMin Park			device_type = "cpu";
663ae2b744SSungMin Park			compatible = "arm,cortex-a55";
673ae2b744SSungMin Park			reg = <0x400>;
683ae2b744SSungMin Park			enable-method = "psci";
693ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
703ae2b744SSungMin Park		};
713ae2b744SSungMin Park
723ae2b744SSungMin Park		cpu5: cpu@500 {
733ae2b744SSungMin Park			device_type = "cpu";
743ae2b744SSungMin Park			compatible = "arm,cortex-a55";
753ae2b744SSungMin Park			reg = <0x500>;
763ae2b744SSungMin Park			enable-method = "psci";
773ae2b744SSungMin Park			cpu-idle-states = <&cpu_sleep>;
783ae2b744SSungMin Park		};
793ae2b744SSungMin Park
803ae2b744SSungMin Park		idle-states {
813ae2b744SSungMin Park			entry-method = "psci";
823ae2b744SSungMin Park
833ae2b744SSungMin Park			cpu_sleep: cpu-sleep {
843ae2b744SSungMin Park				compatible = "arm,idle-state";
853ae2b744SSungMin Park				arm,psci-suspend-param = <0x0010000>;
863ae2b744SSungMin Park				local-timer-stop;
873ae2b744SSungMin Park				entry-latency-us = <300>;
883ae2b744SSungMin Park				exit-latency-us = <1200>;
893ae2b744SSungMin Park				min-residency-us = <2000>;
903ae2b744SSungMin Park			};
913ae2b744SSungMin Park		};
923ae2b744SSungMin Park	};
933ae2b744SSungMin Park
943ae2b744SSungMin Park	fin_pll: clock-finpll {
953ae2b744SSungMin Park		compatible = "fixed-factor-clock";
963ae2b744SSungMin Park		clocks = <&osc_clk>;
973ae2b744SSungMin Park		#clock-cells = <0>;
983ae2b744SSungMin Park		clock-div = <2>;
993ae2b744SSungMin Park		clock-mult = <1>;
1003ae2b744SSungMin Park		clock-output-names = "fin_pll";
1013ae2b744SSungMin Park	};
1023ae2b744SSungMin Park
1033ae2b744SSungMin Park	osc_clk: clock-osc {
1043ae2b744SSungMin Park		/* XXTI */
1053ae2b744SSungMin Park		compatible = "fixed-clock";
1063ae2b744SSungMin Park		#clock-cells = <0>;
1073ae2b744SSungMin Park		clock-output-names = "osc_clk";
1083ae2b744SSungMin Park	};
1093ae2b744SSungMin Park
1103ae2b744SSungMin Park	pmu {
1113ae2b744SSungMin Park		compatible = "arm,cortex-a55-pmu";
1123ae2b744SSungMin Park		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
1133ae2b744SSungMin Park		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>, <&cpu4>, <&cpu5>;
1143ae2b744SSungMin Park	};
1153ae2b744SSungMin Park
1163ae2b744SSungMin Park	psci {
1173ae2b744SSungMin Park		compatible = "arm,psci-0.2";
1183ae2b744SSungMin Park		method = "smc";
1193ae2b744SSungMin Park	};
1203ae2b744SSungMin Park
121*1f8fb2a8SKrzysztof Kozlowski	soc: soc@0 {
1223ae2b744SSungMin Park		compatible = "simple-bus";
1233ae2b744SSungMin Park		ranges = <0x0 0x0 0x0 0x0 0x0 0x17000000>;
1243ae2b744SSungMin Park		#address-cells = <2>;
1253ae2b744SSungMin Park		#size-cells = <2>;
1263ae2b744SSungMin Park
1273ae2b744SSungMin Park		cmu_imem: clock-controller@10010000 {
1283ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-imem";
1293ae2b744SSungMin Park			reg = <0x0 0x10010000 0x0 0x4000>;
1303ae2b744SSungMin Park			#clock-cells = <1>;
1313ae2b744SSungMin Park			clocks = <&fin_pll>,
1323ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_IMEM_ACLK>,
1333ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_IMEM_CA5>,
1343ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_IMEM_JPEG>,
1353ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_IMEM_SSS>;
1363ae2b744SSungMin Park			clock-names = "fin_pll", "aclk", "ca5", "jpeg", "sss";
1373ae2b744SSungMin Park		};
1383ae2b744SSungMin Park
1393ae2b744SSungMin Park		timer@10040000 {
1403ae2b744SSungMin Park			compatible = "axis,artpec9-mct", "samsung,exynos4210-mct";
1413ae2b744SSungMin Park			reg = <0x0 0x10040000 0x0 0x1000>;
1423ae2b744SSungMin Park			clocks = <&fin_pll>, <&cmu_imem CLK_GOUT_IMEM_MCT0_PCLK>;
1433ae2b744SSungMin Park			clock-names = "fin_pll", "mct";
1443ae2b744SSungMin Park			interrupts = <GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
1453ae2b744SSungMin Park				     <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
1463ae2b744SSungMin Park				     <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
1473ae2b744SSungMin Park				     <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
1483ae2b744SSungMin Park				     <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
1493ae2b744SSungMin Park				     <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
1503ae2b744SSungMin Park				     <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
1513ae2b744SSungMin Park				     <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
1523ae2b744SSungMin Park				     <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>,
1533ae2b744SSungMin Park				     <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
1543ae2b744SSungMin Park				     <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
1553ae2b744SSungMin Park				     <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>;
1563ae2b744SSungMin Park		};
1573ae2b744SSungMin Park
1583ae2b744SSungMin Park		gic: interrupt-controller@10400000 {
1593ae2b744SSungMin Park			compatible = "arm,gic-v3";
1603ae2b744SSungMin Park			reg = <0x0 0x10400000 0x0 0x00040000>,
1613ae2b744SSungMin Park			      <0x0 0x10440000 0x0 0x000c0000>;
1623ae2b744SSungMin Park			#interrupt-cells = <3>;
1633ae2b744SSungMin Park			interrupt-controller;
1643ae2b744SSungMin Park			redistributor-stride = <0x0 0x20000>;
1653ae2b744SSungMin Park			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
1663ae2b744SSungMin Park		};
1673ae2b744SSungMin Park
1683ae2b744SSungMin Park		cmu_cpucl: clock-controller@12810000 {
1693ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-cpucl";
1703ae2b744SSungMin Park			reg = <0x0 0x12810000 0x0 0x4000>;
1713ae2b744SSungMin Park			#clock-cells = <1>;
1723ae2b744SSungMin Park			clocks = <&fin_pll>,
1733ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_CPUCL_SWITCH>;
1743ae2b744SSungMin Park			clock-names = "fin_pll", "switch";
1753ae2b744SSungMin Park		};
1763ae2b744SSungMin Park
1773ae2b744SSungMin Park		cmu_cmu: clock-controller@12c00000 {
1783ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-cmu";
1793ae2b744SSungMin Park			reg = <0x0 0x12c00000 0x0 0x4000>;
1803ae2b744SSungMin Park			#clock-cells = <1>;
1813ae2b744SSungMin Park			clocks = <&fin_pll>;
1823ae2b744SSungMin Park			clock-names = "fin_pll";
1833ae2b744SSungMin Park		};
1843ae2b744SSungMin Park
1853ae2b744SSungMin Park		cmu_core: clock-controller@12c10000 {
1863ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-core";
1873ae2b744SSungMin Park			reg = <0x0 0x12c10000 0x0 0x4000>;
1883ae2b744SSungMin Park			#clock-cells = <1>;
1893ae2b744SSungMin Park			clocks = <&fin_pll>,
1903ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_CORE_MAIN>;
1913ae2b744SSungMin Park			clock-names = "fin_pll", "main";
1923ae2b744SSungMin Park		};
1933ae2b744SSungMin Park
1943ae2b744SSungMin Park		cmu_bus: clock-controller@13410000 {
1953ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-bus";
1963ae2b744SSungMin Park			reg = <0x0 0x13410000 0x0 0x4000>;
1973ae2b744SSungMin Park			#clock-cells = <1>;
1983ae2b744SSungMin Park			clocks = <&fin_pll>,
1993ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_BUS>;
2003ae2b744SSungMin Park			clock-names = "fin_pll", "bus";
2013ae2b744SSungMin Park		};
2023ae2b744SSungMin Park
2033ae2b744SSungMin Park		cmu_peri: clock-controller@14010000 {
2043ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-peri";
2053ae2b744SSungMin Park			reg = <0x0 0x14010000 0x0 0x4000>;
2063ae2b744SSungMin Park			#clock-cells = <1>;
2073ae2b744SSungMin Park			clocks = <&fin_pll>,
2083ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_PERI_IP>,
2093ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_PERI_DISP>;
2103ae2b744SSungMin Park			clock-names = "fin_pll", "ip", "disp";
2113ae2b744SSungMin Park		};
2123ae2b744SSungMin Park
2133ae2b744SSungMin Park		pinctrl_peric: pinctrl@141f0000 {
2143ae2b744SSungMin Park			compatible = "axis,artpec9-pinctrl";
2153ae2b744SSungMin Park			reg = <0x0 0x141f0000 0x0 0x1000>;
2163ae2b744SSungMin Park			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
2173ae2b744SSungMin Park		};
2183ae2b744SSungMin Park
2193ae2b744SSungMin Park		cmu_fsys0: clock-controller@14410000 {
2203ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-fsys0";
2213ae2b744SSungMin Park			reg = <0x0 0x14410000 0x0 0x4000>;
2223ae2b744SSungMin Park			#clock-cells = <1>;
2233ae2b744SSungMin Park			clocks = <&fin_pll>,
2243ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_FSYS0_BUS>,
2253ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_FSYS0_IP>;
2263ae2b744SSungMin Park			clock-names = "fin_pll", "bus", "ip";
2273ae2b744SSungMin Park		};
2283ae2b744SSungMin Park
2293ae2b744SSungMin Park		pinctrl_fsys0: pinctrl@14430000 {
2303ae2b744SSungMin Park			compatible = "axis,artpec9-pinctrl";
2313ae2b744SSungMin Park			reg = <0x0 0x14430000 0x0 0x1000>;
2323ae2b744SSungMin Park			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
2333ae2b744SSungMin Park		};
2343ae2b744SSungMin Park
2353ae2b744SSungMin Park		cmu_fsys1: clock-controller@14c10000 {
2363ae2b744SSungMin Park			compatible = "axis,artpec9-cmu-fsys1";
2373ae2b744SSungMin Park			reg = <0x0 0x14c10000 0x0 0x4000>;
2383ae2b744SSungMin Park			#clock-cells = <1>;
2393ae2b744SSungMin Park			clocks = <&fin_pll>,
2403ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN0>,
2413ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN1>,
2423ae2b744SSungMin Park				 <&cmu_cmu CLK_DOUT_CMU_FSYS1_BUS>;
2433ae2b744SSungMin Park			clock-names = "fin_pll", "scan0", "scan1", "bus";
2443ae2b744SSungMin Park		};
2453ae2b744SSungMin Park
2463ae2b744SSungMin Park		pinctrl_fsys1: pinctrl@14c30000 {
2473ae2b744SSungMin Park			compatible = "axis,artpec9-pinctrl";
2483ae2b744SSungMin Park			reg = <0x0 0x14c30000 0x0 0x1000>;
2493ae2b744SSungMin Park			interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
2503ae2b744SSungMin Park		};
2513ae2b744SSungMin Park
2523ae2b744SSungMin Park		pmu_system_controller: system-controller@14c40000 {
2533ae2b744SSungMin Park			compatible = "axis,artpec9-pmu", "samsung,exynos7-pmu", "syscon";
2543ae2b744SSungMin Park			reg = <0x0 0x14c40000 0x0 0x10000>;
2553ae2b744SSungMin Park		};
2563ae2b744SSungMin Park
2573ae2b744SSungMin Park		serial_0: serial@14c70000 {
2583ae2b744SSungMin Park			compatible = "axis,artpec9-uart", "samsung,exynos8895-uart";
2593ae2b744SSungMin Park			reg = <0x0 0x14c70000 0x0 0x100>;
2603ae2b744SSungMin Park			clocks = <&cmu_fsys1 CLK_GOUT_FSYS1_UART0_PCLK>,
2613ae2b744SSungMin Park				 <&cmu_fsys1 CLK_GOUT_FSYS1_UART0_SCLK_UART>;
2623ae2b744SSungMin Park			clock-names = "uart", "clk_uart_baud0";
2633ae2b744SSungMin Park			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
2643ae2b744SSungMin Park			pinctrl-names = "default";
2653ae2b744SSungMin Park			pinctrl-0 = <&serial0_bus>;
2663ae2b744SSungMin Park			samsung,uart-fifosize = <64>;
2673ae2b744SSungMin Park		};
2683ae2b744SSungMin Park	};
2693ae2b744SSungMin Park
2703ae2b744SSungMin Park	timer {
2713ae2b744SSungMin Park		compatible = "arm,armv8-timer";
2723ae2b744SSungMin Park		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
2733ae2b744SSungMin Park			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
2743ae2b744SSungMin Park			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
2753ae2b744SSungMin Park			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
2763ae2b744SSungMin Park	};
2773ae2b744SSungMin Park};
278