1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Unisoc SC9863A SoC DTS file 4 * 5 * Copyright (C) 2019, Unisoc Inc. 6 */ 7 8#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include "sharkl3.dtsi" 10 11/ { 12 cpus { 13 #address-cells = <2>; 14 #size-cells = <0>; 15 16 cpu-map { 17 cluster0 { 18 core0 { 19 cpu = <&CPU0>; 20 }; 21 core1 { 22 cpu = <&CPU1>; 23 }; 24 core2 { 25 cpu = <&CPU2>; 26 }; 27 core3 { 28 cpu = <&CPU3>; 29 }; 30 core4 { 31 cpu = <&CPU4>; 32 }; 33 core5 { 34 cpu = <&CPU5>; 35 }; 36 core6 { 37 cpu = <&CPU6>; 38 }; 39 core7 { 40 cpu = <&CPU7>; 41 }; 42 }; 43 }; 44 45 CPU0: cpu@0 { 46 device_type = "cpu"; 47 compatible = "arm,cortex-a55"; 48 reg = <0x0 0x0>; 49 enable-method = "psci"; 50 cpu-idle-states = <&CORE_PD>; 51 }; 52 53 CPU1: cpu@100 { 54 device_type = "cpu"; 55 compatible = "arm,cortex-a55"; 56 reg = <0x0 0x100>; 57 enable-method = "psci"; 58 cpu-idle-states = <&CORE_PD>; 59 }; 60 61 CPU2: cpu@200 { 62 device_type = "cpu"; 63 compatible = "arm,cortex-a55"; 64 reg = <0x0 0x200>; 65 enable-method = "psci"; 66 cpu-idle-states = <&CORE_PD>; 67 }; 68 69 CPU3: cpu@300 { 70 device_type = "cpu"; 71 compatible = "arm,cortex-a55"; 72 reg = <0x0 0x300>; 73 enable-method = "psci"; 74 cpu-idle-states = <&CORE_PD>; 75 }; 76 77 CPU4: cpu@400 { 78 device_type = "cpu"; 79 compatible = "arm,cortex-a55"; 80 reg = <0x0 0x400>; 81 enable-method = "psci"; 82 cpu-idle-states = <&CORE_PD>; 83 }; 84 85 CPU5: cpu@500 { 86 device_type = "cpu"; 87 compatible = "arm,cortex-a55"; 88 reg = <0x0 0x500>; 89 enable-method = "psci"; 90 cpu-idle-states = <&CORE_PD>; 91 }; 92 93 CPU6: cpu@600 { 94 device_type = "cpu"; 95 compatible = "arm,cortex-a55"; 96 reg = <0x0 0x600>; 97 enable-method = "psci"; 98 cpu-idle-states = <&CORE_PD>; 99 }; 100 101 CPU7: cpu@700 { 102 device_type = "cpu"; 103 compatible = "arm,cortex-a55"; 104 reg = <0x0 0x700>; 105 enable-method = "psci"; 106 cpu-idle-states = <&CORE_PD>; 107 }; 108 }; 109 110 idle-states { 111 entry-method = "arm,psci"; 112 CORE_PD: core-pd { 113 compatible = "arm,idle-state"; 114 entry-latency-us = <4000>; 115 exit-latency-us = <4000>; 116 min-residency-us = <10000>; 117 local-timer-stop; 118 arm,psci-suspend-param = <0x00010000>; 119 }; 120 }; 121 122 psci { 123 compatible = "arm,psci-0.2"; 124 method = "smc"; 125 }; 126 127 timer { 128 compatible = "arm,armv8-timer"; 129 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */ 130 <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */ 131 <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */ 132 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */ 133 }; 134 135 pmu { 136 compatible = "arm,armv8-pmuv3"; 137 interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, 138 <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, 139 <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>, 140 <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, 141 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>, 142 <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>, 143 <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>, 144 <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>; 145 }; 146 147 soc { 148 gic: interrupt-controller@14000000 { 149 compatible = "arm,gic-v3"; 150 #interrupt-cells = <3>; 151 #address-cells = <2>; 152 #size-cells = <2>; 153 ranges; 154 redistributor-stride = <0x0 0x20000>; /* 128KB stride */ 155 #redistributor-regions = <1>; 156 interrupt-controller; 157 reg = <0x0 0x14000000 0 0x20000>, /* GICD */ 158 <0x0 0x14040000 0 0x100000>; /* GICR */ 159 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 160 }; 161 162 funnel@10001000 { 163 compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 164 reg = <0 0x10001000 0 0x1000>; 165 clocks = <&ext_26m>; 166 clock-names = "apb_pclk"; 167 168 out-ports { 169 port { 170 funnel_soc_out_port: endpoint { 171 remote-endpoint = <&etb_in>; 172 }; 173 }; 174 }; 175 176 in-ports { 177 port { 178 funnel_soc_in_port: endpoint { 179 remote-endpoint = 180 <&funnel_ca55_out_port>; 181 }; 182 }; 183 }; 184 }; 185 186 etb@10003000 { 187 compatible = "arm,coresight-tmc", "arm,primecell"; 188 reg = <0 0x10003000 0 0x1000>; 189 clocks = <&ext_26m>; 190 clock-names = "apb_pclk"; 191 192 in-ports { 193 port { 194 etb_in: endpoint { 195 remote-endpoint = 196 <&funnel_soc_out_port>; 197 }; 198 }; 199 }; 200 }; 201 202 funnel@12001000 { 203 compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 204 reg = <0 0x12001000 0 0x1000>; 205 clocks = <&ext_26m>; 206 clock-names = "apb_pclk"; 207 208 out-ports { 209 port { 210 funnel_little_out_port: endpoint { 211 remote-endpoint = 212 <&etf_little_in>; 213 }; 214 }; 215 }; 216 217 in-ports { 218 #address-cells = <1>; 219 #size-cells = <0>; 220 221 port@0 { 222 reg = <0>; 223 funnel_little_in_port0: endpoint { 224 remote-endpoint = <&etm0_out>; 225 }; 226 }; 227 228 port@1 { 229 reg = <1>; 230 funnel_little_in_port1: endpoint { 231 remote-endpoint = <&etm1_out>; 232 }; 233 }; 234 235 port@2 { 236 reg = <2>; 237 funnel_little_in_port2: endpoint { 238 remote-endpoint = <&etm2_out>; 239 }; 240 }; 241 242 port@3 { 243 reg = <3>; 244 funnel_little_in_port3: endpoint { 245 remote-endpoint = <&etm3_out>; 246 }; 247 }; 248 }; 249 }; 250 251 etf@12002000 { 252 compatible = "arm,coresight-tmc", "arm,primecell"; 253 reg = <0 0x12002000 0 0x1000>; 254 clocks = <&ext_26m>; 255 clock-names = "apb_pclk"; 256 257 out-ports { 258 port { 259 etf_little_out: endpoint { 260 remote-endpoint = 261 <&funnel_ca55_in_port0>; 262 }; 263 }; 264 }; 265 266 in-port { 267 port { 268 etf_little_in: endpoint { 269 remote-endpoint = 270 <&funnel_little_out_port>; 271 }; 272 }; 273 }; 274 }; 275 276 etf@12003000 { 277 compatible = "arm,coresight-tmc", "arm,primecell"; 278 reg = <0 0x12003000 0 0x1000>; 279 clocks = <&ext_26m>; 280 clock-names = "apb_pclk"; 281 282 out-ports { 283 port { 284 etf_big_out: endpoint { 285 remote-endpoint = 286 <&funnel_ca55_in_port1>; 287 }; 288 }; 289 }; 290 291 in-ports { 292 port { 293 etf_big_in: endpoint { 294 remote-endpoint = 295 <&funnel_big_out_port>; 296 }; 297 }; 298 }; 299 }; 300 301 funnel@12004000 { 302 compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 303 reg = <0 0x12004000 0 0x1000>; 304 clocks = <&ext_26m>; 305 clock-names = "apb_pclk"; 306 307 out-ports { 308 port { 309 funnel_ca55_out_port: endpoint { 310 remote-endpoint = 311 <&funnel_soc_in_port>; 312 }; 313 }; 314 }; 315 316 in-ports { 317 #address-cells = <1>; 318 #size-cells = <0>; 319 320 port@0 { 321 reg = <0>; 322 funnel_ca55_in_port0: endpoint { 323 remote-endpoint = 324 <&etf_little_out>; 325 }; 326 }; 327 328 port@1 { 329 reg = <1>; 330 funnel_ca55_in_port1: endpoint { 331 remote-endpoint = 332 <&etf_big_out>; 333 }; 334 }; 335 }; 336 }; 337 338 funnel@12005000 { 339 compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 340 reg = <0 0x12005000 0 0x1000>; 341 clocks = <&ext_26m>; 342 clock-names = "apb_pclk"; 343 344 out-ports { 345 port { 346 funnel_big_out_port: endpoint { 347 remote-endpoint = 348 <&etf_big_in>; 349 }; 350 }; 351 }; 352 353 in-ports { 354 #address-cells = <1>; 355 #size-cells = <0>; 356 357 port@0 { 358 reg = <0>; 359 funnel_big_in_port0: endpoint { 360 remote-endpoint = <&etm4_out>; 361 }; 362 }; 363 364 port@1 { 365 reg = <1>; 366 funnel_big_in_port1: endpoint { 367 remote-endpoint = <&etm5_out>; 368 }; 369 }; 370 371 port@2 { 372 reg = <2>; 373 funnel_big_in_port2: endpoint { 374 remote-endpoint = <&etm6_out>; 375 }; 376 }; 377 378 port@3 { 379 reg = <3>; 380 funnel_big_in_port3: endpoint { 381 remote-endpoint = <&etm7_out>; 382 }; 383 }; 384 }; 385 }; 386 387 etm@13040000 { 388 compatible = "arm,coresight-etm4x", "arm,primecell"; 389 reg = <0 0x13040000 0 0x1000>; 390 cpu = <&CPU0>; 391 clocks = <&ext_26m>; 392 clock-names = "apb_pclk"; 393 394 out-ports { 395 port { 396 etm0_out: endpoint { 397 remote-endpoint = 398 <&funnel_little_in_port0>; 399 }; 400 }; 401 }; 402 }; 403 404 etm@13140000 { 405 compatible = "arm,coresight-etm4x", "arm,primecell"; 406 reg = <0 0x13140000 0 0x1000>; 407 cpu = <&CPU1>; 408 clocks = <&ext_26m>; 409 clock-names = "apb_pclk"; 410 411 out-ports { 412 port { 413 etm1_out: endpoint { 414 remote-endpoint = 415 <&funnel_little_in_port1>; 416 }; 417 }; 418 }; 419 }; 420 421 etm@13240000 { 422 compatible = "arm,coresight-etm4x", "arm,primecell"; 423 reg = <0 0x13240000 0 0x1000>; 424 cpu = <&CPU2>; 425 clocks = <&ext_26m>; 426 clock-names = "apb_pclk"; 427 428 out-ports { 429 port { 430 etm2_out: endpoint { 431 remote-endpoint = 432 <&funnel_little_in_port2>; 433 }; 434 }; 435 }; 436 }; 437 438 etm@13340000 { 439 compatible = "arm,coresight-etm4x", "arm,primecell"; 440 reg = <0 0x13340000 0 0x1000>; 441 cpu = <&CPU3>; 442 clocks = <&ext_26m>; 443 clock-names = "apb_pclk"; 444 445 out-ports { 446 port { 447 etm3_out: endpoint { 448 remote-endpoint = 449 <&funnel_little_in_port3>; 450 }; 451 }; 452 }; 453 }; 454 455 etm@13440000 { 456 compatible = "arm,coresight-etm4x", "arm,primecell"; 457 reg = <0 0x13440000 0 0x1000>; 458 cpu = <&CPU4>; 459 clocks = <&ext_26m>; 460 clock-names = "apb_pclk"; 461 462 out-ports { 463 port { 464 etm4_out: endpoint { 465 remote-endpoint = 466 <&funnel_big_in_port0>; 467 }; 468 }; 469 }; 470 }; 471 472 etm@13540000 { 473 compatible = "arm,coresight-etm4x", "arm,primecell"; 474 reg = <0 0x13540000 0 0x1000>; 475 cpu = <&CPU5>; 476 clocks = <&ext_26m>; 477 clock-names = "apb_pclk"; 478 479 out-ports { 480 port { 481 etm5_out: endpoint { 482 remote-endpoint = 483 <&funnel_big_in_port1>; 484 }; 485 }; 486 }; 487 }; 488 489 etm@13640000 { 490 compatible = "arm,coresight-etm4x", "arm,primecell"; 491 reg = <0 0x13640000 0 0x1000>; 492 cpu = <&CPU6>; 493 clocks = <&ext_26m>; 494 clock-names = "apb_pclk"; 495 496 out-ports { 497 port { 498 etm6_out: endpoint { 499 remote-endpoint = 500 <&funnel_big_in_port2>; 501 }; 502 }; 503 }; 504 }; 505 506 etm@13740000 { 507 compatible = "arm,coresight-etm4x", "arm,primecell"; 508 reg = <0 0x13740000 0 0x1000>; 509 cpu = <&CPU7>; 510 clocks = <&ext_26m>; 511 clock-names = "apb_pclk"; 512 513 out-ports { 514 port { 515 etm7_out: endpoint { 516 remote-endpoint = 517 <&funnel_big_in_port3>; 518 }; 519 }; 520 }; 521 }; 522 }; 523}; 524