1// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2/* 3 * Samsung's Exynos 8895 SoC device tree source 4 * 5 * Copyright (c) 2024, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com> 6 */ 7 8#include <dt-bindings/clock/samsung,exynos8895.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h> 10 11/ { 12 compatible = "samsung,exynos8895"; 13 #address-cells = <2>; 14 #size-cells = <1>; 15 16 interrupt-parent = <&gic>; 17 18 aliases { 19 pinctrl0 = &pinctrl_alive; 20 pinctrl1 = &pinctrl_abox; 21 pinctrl2 = &pinctrl_vts; 22 pinctrl3 = &pinctrl_fsys0; 23 pinctrl4 = &pinctrl_fsys1; 24 pinctrl5 = &pinctrl_busc; 25 pinctrl6 = &pinctrl_peric0; 26 pinctrl7 = &pinctrl_peric1; 27 }; 28 29 arm-a53-pmu { 30 compatible = "arm,cortex-a53-pmu"; 31 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>, 32 <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>, 33 <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>, 34 <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; 35 interrupt-affinity = <&cpu0>, 36 <&cpu1>, 37 <&cpu2>, 38 <&cpu3>; 39 }; 40 41 /* There's no PMU model for the Mongoose cores */ 42 43 cpus { 44 #address-cells = <1>; 45 #size-cells = <0>; 46 47 cpu-map { 48 cluster0 { 49 core0 { 50 cpu = <&cpu0>; 51 }; 52 core1 { 53 cpu = <&cpu1>; 54 }; 55 core2 { 56 cpu = <&cpu2>; 57 }; 58 core3 { 59 cpu = <&cpu3>; 60 }; 61 }; 62 63 cluster1 { 64 core0 { 65 cpu = <&cpu4>; 66 }; 67 core1 { 68 cpu = <&cpu5>; 69 }; 70 core2 { 71 cpu = <&cpu6>; 72 }; 73 core3 { 74 cpu = <&cpu7>; 75 }; 76 }; 77 }; 78 79 cpu4: cpu@0 { 80 device_type = "cpu"; 81 compatible = "samsung,mongoose-m2"; 82 reg = <0x0>; 83 enable-method = "psci"; 84 }; 85 86 cpu5: cpu@1 { 87 device_type = "cpu"; 88 compatible = "samsung,mongoose-m2"; 89 reg = <0x1>; 90 enable-method = "psci"; 91 }; 92 93 cpu6: cpu@2 { 94 device_type = "cpu"; 95 compatible = "samsung,mongoose-m2"; 96 reg = <0x2>; 97 enable-method = "psci"; 98 }; 99 100 cpu7: cpu@3 { 101 device_type = "cpu"; 102 compatible = "samsung,mongoose-m2"; 103 reg = <0x3>; 104 enable-method = "psci"; 105 }; 106 107 cpu0: cpu@100 { 108 device_type = "cpu"; 109 compatible = "arm,cortex-a53"; 110 reg = <0x100>; 111 enable-method = "psci"; 112 }; 113 114 cpu1: cpu@101 { 115 device_type = "cpu"; 116 compatible = "arm,cortex-a53"; 117 reg = <0x101>; 118 enable-method = "psci"; 119 }; 120 121 cpu2: cpu@102 { 122 device_type = "cpu"; 123 compatible = "arm,cortex-a53"; 124 reg = <0x102>; 125 enable-method = "psci"; 126 }; 127 128 cpu3: cpu@103 { 129 device_type = "cpu"; 130 compatible = "arm,cortex-a53"; 131 reg = <0x103>; 132 enable-method = "psci"; 133 }; 134 }; 135 136 oscclk: osc-clock { 137 compatible = "fixed-clock"; 138 #clock-cells = <0>; 139 clock-output-names = "oscclk"; 140 }; 141 142 psci { 143 compatible = "arm,psci"; 144 method = "smc"; 145 cpu_off = <0x84000002>; 146 cpu_on = <0xc4000003>; 147 cpu_suspend = <0xc4000001>; 148 }; 149 150 soc: soc@0 { 151 compatible = "simple-bus"; 152 ranges = <0x0 0x0 0x0 0x20000000>; 153 154 #address-cells = <1>; 155 #size-cells = <1>; 156 157 chipid@10000000 { 158 compatible = "samsung,exynos8895-chipid", 159 "samsung,exynos850-chipid"; 160 reg = <0x10000000 0x24>; 161 }; 162 163 cmu_peris: clock-controller@10010000 { 164 compatible = "samsung,exynos8895-cmu-peris"; 165 reg = <0x10010000 0x8000>; 166 #clock-cells = <1>; 167 clocks = <&oscclk>, 168 <&cmu_top CLK_DOUT_CMU_PERIS_BUS>; 169 clock-names = "oscclk", "bus"; 170 }; 171 172 timer@10040000 { 173 compatible = "samsung,exynos8895-mct", 174 "samsung,exynos4210-mct"; 175 reg = <0x10040000 0x800>; 176 clocks = <&oscclk>, <&cmu_peris CLK_GOUT_PERIS_MCT_PCLK>; 177 clock-names = "fin_pll", "mct"; 178 interrupts = <GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>, 179 <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>, 180 <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>, 181 <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>, 182 <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>, 183 <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>, 184 <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>, 185 <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>, 186 <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>, 187 <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>, 188 <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>, 189 <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>; 190 }; 191 192 gic: interrupt-controller@10201000 { 193 compatible = "arm,gic-400"; 194 reg = <0x10201000 0x1000>, 195 <0x10202000 0x1000>, 196 <0x10204000 0x2000>, 197 <0x10206000 0x2000>; 198 #interrupt-cells = <3>; 199 interrupt-controller; 200 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | 201 IRQ_TYPE_LEVEL_HIGH)>; 202 #address-cells = <0>; 203 #size-cells = <1>; 204 }; 205 206 cmu_peric0: clock-controller@10400000 { 207 compatible = "samsung,exynos8895-cmu-peric0"; 208 reg = <0x10400000 0x8000>; 209 #clock-cells = <1>; 210 clocks = <&oscclk>, 211 <&cmu_top CLK_DOUT_CMU_PERIC0_BUS>, 212 <&cmu_top CLK_DOUT_CMU_PERIC0_UART_DBG>, 213 <&cmu_top CLK_DOUT_CMU_PERIC0_USI00>, 214 <&cmu_top CLK_DOUT_CMU_PERIC0_USI01>, 215 <&cmu_top CLK_DOUT_CMU_PERIC0_USI02>, 216 <&cmu_top CLK_DOUT_CMU_PERIC0_USI03>; 217 clock-names = "oscclk", "bus", "uart", "usi0", 218 "usi1", "usi2", "usi3"; 219 }; 220 221 pinctrl_peric0: pinctrl@104d0000 { 222 compatible = "samsung,exynos8895-pinctrl"; 223 reg = <0x104d0000 0x1000>; 224 interrupts = <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>; 225 }; 226 227 cmu_peric1: clock-controller@10800000 { 228 compatible = "samsung,exynos8895-cmu-peric1"; 229 reg = <0x10800000 0x8000>; 230 #clock-cells = <1>; 231 clocks = <&oscclk>, 232 <&cmu_top CLK_DOUT_CMU_PERIC1_BUS>, 233 <&cmu_top CLK_DOUT_CMU_PERIC1_SPEEDY2>, 234 <&cmu_top CLK_DOUT_CMU_PERIC1_SPI_CAM0>, 235 <&cmu_top CLK_DOUT_CMU_PERIC1_SPI_CAM1>, 236 <&cmu_top CLK_DOUT_CMU_PERIC1_UART_BT>, 237 <&cmu_top CLK_DOUT_CMU_PERIC1_USI04>, 238 <&cmu_top CLK_DOUT_CMU_PERIC1_USI05>, 239 <&cmu_top CLK_DOUT_CMU_PERIC1_USI06>, 240 <&cmu_top CLK_DOUT_CMU_PERIC1_USI07>, 241 <&cmu_top CLK_DOUT_CMU_PERIC1_USI08>, 242 <&cmu_top CLK_DOUT_CMU_PERIC1_USI09>, 243 <&cmu_top CLK_DOUT_CMU_PERIC1_USI10>, 244 <&cmu_top CLK_DOUT_CMU_PERIC1_USI11>, 245 <&cmu_top CLK_DOUT_CMU_PERIC1_USI12>, 246 <&cmu_top CLK_DOUT_CMU_PERIC1_USI13>; 247 clock-names = "oscclk", "bus", "speedy", "cam0", 248 "cam1", "uart", "usi4", "usi5", 249 "usi6", "usi7", "usi8", "usi9", 250 "usi10", "usi11", "usi12", "usi13"; 251 }; 252 253 pinctrl_peric1: pinctrl@10980000 { 254 compatible = "samsung,exynos8895-pinctrl"; 255 reg = <0x10980000 0x1000>; 256 interrupts = <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>; 257 }; 258 259 spi_0: spi@109d0000 { 260 compatible = "samsung,exynos8895-spi", 261 "samsung,exynos850-spi"; 262 reg = <0x109d0000 0x100>; 263 #address-cells = <1>; 264 #size-cells = <0>; 265 clocks = <&cmu_peric1 CLK_GOUT_PERIC1_SPI_CAM0_PCLK>, 266 <&cmu_peric1 CLK_GOUT_PERIC1_SPI_CAM0_SPI_EXT_CLK>; 267 clock-names = "spi", "spi_busclk0"; 268 interrupts = <GIC_SPI 435 IRQ_TYPE_LEVEL_HIGH>; 269 pinctrl-0 = <&spi0_bus>; 270 pinctrl-names = "default"; 271 status = "disabled"; 272 }; 273 274 spi_1: spi@109e0000 { 275 compatible = "samsung,exynos8895-spi", 276 "samsung,exynos850-spi"; 277 reg = <0x109e0000 0x100>; 278 #address-cells = <1>; 279 #size-cells = <0>; 280 clocks = <&cmu_peric1 CLK_GOUT_PERIC1_SPI_CAM1_PCLK>, 281 <&cmu_peric1 CLK_GOUT_PERIC1_SPI_CAM1_SPI_EXT_CLK>; 282 clock-names = "spi", "spi_busclk0"; 283 interrupts = <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH>; 284 pinctrl-0 = <&spi1_bus>; 285 pinctrl-names = "default"; 286 status = "disabled"; 287 }; 288 289 cmu_fsys0: clock-controller@11000000 { 290 compatible = "samsung,exynos8895-cmu-fsys0"; 291 reg = <0x11000000 0x8000>; 292 #clock-cells = <1>; 293 clocks = <&oscclk>, 294 <&cmu_top CLK_DOUT_CMU_FSYS0_BUS>, 295 <&cmu_top CLK_DOUT_CMU_FSYS0_DPGTC>, 296 <&cmu_top CLK_DOUT_CMU_FSYS0_MMC_EMBD>, 297 <&cmu_top CLK_DOUT_CMU_FSYS0_UFS_EMBD>, 298 <&cmu_top CLK_DOUT_CMU_FSYS0_USBDRD30>; 299 clock-names = "oscclk", "bus", "dpgtc", "mmc", 300 "ufs", "usbdrd30"; 301 }; 302 303 pinctrl_fsys0: pinctrl@11050000 { 304 compatible = "samsung,exynos8895-pinctrl"; 305 reg = <0x11050000 0x1000>; 306 interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>; 307 }; 308 309 cmu_fsys1: clock-controller@11400000 { 310 compatible = "samsung,exynos8895-cmu-fsys1"; 311 reg = <0x11400000 0x8000>; 312 #clock-cells = <1>; 313 clocks = <&oscclk>, 314 <&cmu_top CLK_DOUT_CMU_FSYS1_BUS>, 315 <&cmu_top CLK_DOUT_CMU_FSYS1_PCIE>, 316 <&cmu_top CLK_DOUT_CMU_FSYS1_UFS_CARD>, 317 <&cmu_top CLK_DOUT_CMU_FSYS1_MMC_CARD>; 318 clock-names = "oscclk", "bus", "pcie", "ufs", "mmc"; 319 }; 320 321 pinctrl_fsys1: pinctrl@11430000 { 322 compatible = "samsung,exynos8895-pinctrl"; 323 reg = <0x11430000 0x1000>; 324 interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>; 325 }; 326 327 pinctrl_abox: pinctrl@13e60000 { 328 compatible = "samsung,exynos8895-pinctrl"; 329 reg = <0x13e60000 0x1000>; 330 }; 331 332 pinctrl_vts: pinctrl@14080000 { 333 compatible = "samsung,exynos8895-pinctrl"; 334 reg = <0x14080000 0x1000>; 335 }; 336 337 pinctrl_busc: pinctrl@15a30000 { 338 compatible = "samsung,exynos8895-pinctrl"; 339 reg = <0x15a30000 0x1000>; 340 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 341 }; 342 343 cmu_top: clock-controller@15a80000 { 344 compatible = "samsung,exynos8895-cmu-top"; 345 reg = <0x15a80000 0x8000>; 346 #clock-cells = <1>; 347 clocks = <&oscclk>; 348 clock-names = "oscclk"; 349 }; 350 351 pmu_system_controller: system-controller@16480000 { 352 compatible = "samsung,exynos8895-pmu", 353 "samsung,exynos7-pmu", "syscon"; 354 reg = <0x16480000 0x10000>; 355 }; 356 357 pinctrl_alive: pinctrl@164b0000 { 358 compatible = "samsung,exynos8895-pinctrl"; 359 reg = <0x164b0000 0x1000>; 360 361 wakeup-interrupt-controller { 362 compatible = "samsung,exynos8895-wakeup-eint", 363 "samsung,exynos7-wakeup-eint"; 364 interrupt-parent = <&gic>; 365 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 366 }; 367 }; 368 }; 369 370 timer { 371 compatible = "arm,armv8-timer"; 372 /* Hypervisor Virtual Timer interrupt is not wired to GIC */ 373 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 374 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 375 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, 376 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>; 377 /* 378 * Non-updatable, broken stock Samsung bootloader does not 379 * configure CNTFRQ_EL0 380 */ 381 clock-frequency = <26000000>; 382 }; 383}; 384 385#include "exynos8895-pinctrl.dtsi" 386#include "arm/samsung/exynos-syscon-restart.dtsi" 387