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