Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: dts: sprd: Add support for Unisoc's UMS512

Add basic support for Unisoc's UMS512, with this patch,
the board ums512-1h10 can run into console.

Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Link: https://lore.kernel.org/r/20230306085717.420353-1-chunyan.zhang@unisoc.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

authored by

Chunyan Zhang and committed by
Arnd Bergmann
2b488183 129469c4

+974 -1
+2 -1
arch/arm64/boot/dts/sprd/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 dtb-$(CONFIG_ARCH_SPRD) += sc9836-openphone.dtb \ 3 3 sp9860g-1h10.dtb \ 4 - sp9863a-1h10.dtb 4 + sp9863a-1h10.dtb \ 5 + ums512-1h10.dtb
+61
arch/arm64/boot/dts/sprd/ums512-1h10.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Unisoc UMS512-1h10 boards DTS file 4 + * 5 + * Copyright (C) 2021, Unisoc Inc. 6 + */ 7 + 8 + /dts-v1/; 9 + 10 + #include "ums512.dtsi" 11 + 12 + / { 13 + model = "Unisoc UMS512-1H10 Board"; 14 + 15 + compatible = "sprd,ums512-1h10", "sprd,ums512"; 16 + 17 + aliases { 18 + serial0 = &uart0; 19 + serial1 = &uart1; 20 + }; 21 + 22 + memory@80000000 { 23 + device_type = "memory"; 24 + reg = <0x0 0x80000000 0x0 0x80000000>; 25 + }; 26 + 27 + chosen { 28 + stdout-path = "serial1:115200n8"; 29 + }; 30 + }; 31 + 32 + &uart0 { 33 + status = "okay"; 34 + }; 35 + 36 + &uart1 { 37 + status = "okay"; 38 + }; 39 + 40 + /* SD card */ 41 + &sdio0 { 42 + bus-width = <4>; 43 + no-sdio; 44 + no-mmc; 45 + sprd,phy-delay-sd-uhs-sdr104 = <0x7f 0x73 0x72 0x72>; 46 + sprd,phy-delay-sd-uhs-sdr50 = <0x6e 0x7f 0x01 0x01>; 47 + sprd,phy-delay-sd-highspeed = <0x7f 0x1a 0x9a 0x9a>; 48 + sprd,phy-delay-legacy = <0x7f 0x1a 0x9a 0x9a>; 49 + sd-uhs-sdr104; 50 + sd-uhs-sdr50; 51 + }; 52 + 53 + /* EMMC storage */ 54 + &sdio3 { 55 + status = "okay"; 56 + bus-width = <8>; 57 + no-sdio; 58 + no-sd; 59 + non-removable; 60 + cap-mmc-hw-reset; 61 + };
+911
arch/arm64/boot/dts/sprd/ums512.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Unisoc UMS512 SoC DTS file 4 + * 5 + * Copyright (C) 2021, Unisoc Inc. 6 + */ 7 + 8 + #include <dt-bindings/clock/sprd,ums512-clk.h> 9 + #include <dt-bindings/interrupt-controller/arm-gic.h> 10 + 11 + / { 12 + interrupt-parent = <&gic>; 13 + #address-cells = <2>; 14 + #size-cells = <2>; 15 + 16 + cpus { 17 + #address-cells = <2>; 18 + #size-cells = <0>; 19 + 20 + cpu-map { 21 + cluster0 { 22 + core0 { 23 + cpu = <&CPU0>; 24 + }; 25 + core1 { 26 + cpu = <&CPU1>; 27 + }; 28 + core2 { 29 + cpu = <&CPU2>; 30 + }; 31 + core3 { 32 + cpu = <&CPU3>; 33 + }; 34 + core4 { 35 + cpu = <&CPU4>; 36 + }; 37 + core5 { 38 + cpu = <&CPU5>; 39 + }; 40 + core6 { 41 + cpu = <&CPU6>; 42 + }; 43 + core7 { 44 + cpu = <&CPU7>; 45 + }; 46 + }; 47 + }; 48 + 49 + CPU0: cpu@0 { 50 + device_type = "cpu"; 51 + compatible = "arm,cortex-a55"; 52 + reg = <0x0 0x0>; 53 + enable-method = "psci"; 54 + cpu-idle-states = <&CORE_PD>; 55 + }; 56 + 57 + CPU1: cpu@100 { 58 + device_type = "cpu"; 59 + compatible = "arm,cortex-a55"; 60 + reg = <0x0 0x100>; 61 + enable-method = "psci"; 62 + cpu-idle-states = <&CORE_PD>; 63 + }; 64 + 65 + CPU2: cpu@200 { 66 + device_type = "cpu"; 67 + compatible = "arm,cortex-a55"; 68 + reg = <0x0 0x200>; 69 + enable-method = "psci"; 70 + cpu-idle-states = <&CORE_PD>; 71 + }; 72 + 73 + CPU3: cpu@300 { 74 + device_type = "cpu"; 75 + compatible = "arm,cortex-a55"; 76 + reg = <0x0 0x300>; 77 + enable-method = "psci"; 78 + cpu-idle-states = <&CORE_PD>; 79 + }; 80 + 81 + CPU4: cpu@400 { 82 + device_type = "cpu"; 83 + compatible = "arm,cortex-a55"; 84 + reg = <0x0 0x400>; 85 + enable-method = "psci"; 86 + cpu-idle-states = <&CORE_PD>; 87 + }; 88 + 89 + CPU5: cpu@500 { 90 + device_type = "cpu"; 91 + compatible = "arm,cortex-a55"; 92 + reg = <0x0 0x500>; 93 + enable-method = "psci"; 94 + cpu-idle-states = <&CORE_PD>; 95 + }; 96 + 97 + CPU6: cpu@600 { 98 + device_type = "cpu"; 99 + compatible = "arm,cortex-a55"; 100 + reg = <0x0 0x600>; 101 + enable-method = "psci"; 102 + cpu-idle-states = <&CORE_PD>; 103 + }; 104 + 105 + CPU7: cpu@700 { 106 + device_type = "cpu"; 107 + compatible = "arm,cortex-a55"; 108 + reg = <0x0 0x700>; 109 + enable-method = "psci"; 110 + cpu-idle-states = <&CORE_PD>; 111 + }; 112 + }; 113 + 114 + idle-states { 115 + entry-method = "psci"; 116 + CORE_PD: core-pd { 117 + compatible = "arm,idle-state"; 118 + entry-latency-us = <4000>; 119 + exit-latency-us = <4000>; 120 + min-residency-us = <10000>; 121 + local-timer-stop; 122 + arm,psci-suspend-param = <0x00010000>; 123 + }; 124 + }; 125 + 126 + psci { 127 + compatible = "arm,psci-0.2"; 128 + method = "smc"; 129 + }; 130 + 131 + timer { 132 + compatible = "arm,armv8-timer"; 133 + interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */ 134 + <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */ 135 + <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */ 136 + <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */ 137 + }; 138 + 139 + pmu { 140 + compatible = "arm,armv8-pmuv3"; 141 + interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>, 142 + <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>, 143 + <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>, 144 + <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>, 145 + <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, 146 + <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>, 147 + <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, 148 + <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; 149 + }; 150 + 151 + soc: soc { 152 + compatible = "simple-bus"; 153 + #address-cells = <2>; 154 + #size-cells = <2>; 155 + ranges; 156 + 157 + gic: interrupt-controller@12000000 { 158 + compatible = "arm,gic-v3"; 159 + reg = <0x0 0x12000000 0 0x20000>, /* GICD */ 160 + <0x0 0x12040000 0 0x100000>; /* GICR */ 161 + #interrupt-cells = <3>; 162 + #address-cells = <2>; 163 + #size-cells = <2>; 164 + ranges; 165 + redistributor-stride = <0x0 0x20000>; /* 128KB stride */ 166 + #redistributor-regions = <1>; 167 + interrupt-controller; 168 + interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 169 + }; 170 + 171 + ap_ahb_regs: syscon@20100000 { 172 + compatible = "sprd,ums512-glbregs", "syscon", 173 + "simple-mfd"; 174 + reg = <0 0x20100000 0 0x4000>; 175 + #address-cells = <1>; 176 + #size-cells = <1>; 177 + ranges = <0 0 0x20100000 0x4000>; 178 + 179 + apahb_gate: clock-controller@0 { 180 + compatible = "sprd,ums512-apahb-gate"; 181 + reg = <0x0 0x3000>; 182 + clocks = <&ext_26m>; 183 + clock-names = "ext-26m"; 184 + #clock-cells = <1>; 185 + }; 186 + }; 187 + 188 + pub_apb_regs: syscon@31050000 { 189 + compatible = "sprd,ums512-glbregs", "syscon", 190 + "simple-mfd"; 191 + reg = <0 0x31050000 0 0x9000>; 192 + }; 193 + 194 + top_dvfs_apb_regs: syscon@322a0000 { 195 + compatible = "sprd,ums512-glbregs", "syscon", 196 + "simple-mfd"; 197 + reg = <0 0x322a0000 0 0x8000>; 198 + }; 199 + 200 + ap_intc0_regs: syscon@32310000 { 201 + compatible = "sprd,ums512-glbregs", "syscon", 202 + "simple-mfd"; 203 + reg = <0 0x32310000 0 0x1000>; 204 + }; 205 + 206 + ap_intc1_regs: syscon@32320000 { 207 + compatible = "sprd,ums512-glbregs", "syscon", 208 + "simple-mfd"; 209 + reg = <0 0x32320000 0 0x1000>; 210 + }; 211 + 212 + ap_intc2_regs: syscon@32330000 { 213 + compatible = "sprd,ums512-glbregs", "syscon", 214 + "simple-mfd"; 215 + reg = <0 0x32330000 0 0x1000>; 216 + }; 217 + 218 + ap_intc3_regs: syscon@32340000 { 219 + compatible = "sprd,ums512-glbregs", "syscon", 220 + "simple-mfd"; 221 + reg = <0 0x32340000 0 0x1000>; 222 + }; 223 + 224 + ap_intc4_regs: syscon@32350000 { 225 + compatible = "sprd,ums512-glbregs", "syscon", 226 + "simple-mfd"; 227 + reg = <0 0x32350000 0 0x1000>; 228 + }; 229 + 230 + ap_intc5_regs: syscon@32360000 { 231 + compatible = "sprd,ums512-glbregs", "syscon", 232 + "simple-mfd"; 233 + reg = <0 0x32360000 0 0x1000>; 234 + }; 235 + 236 + anlg_phy_g0_regs: syscon@32390000 { 237 + compatible = "sprd,ums512-glbregs", "syscon", 238 + "simple-mfd"; 239 + reg = <0 0x32390000 0 0x3000>; 240 + #address-cells = <1>; 241 + #size-cells = <1>; 242 + ranges = <0 0 0x32390000 0x3000>; 243 + 244 + dpll0: clock-controller@0 { 245 + compatible = "sprd,ums512-g0-pll"; 246 + reg = <0x0 0x100>; 247 + #clock-cells = <1>; 248 + }; 249 + }; 250 + 251 + anlg_phy_g2_regs: syscon@323b0000 { 252 + compatible = "sprd,ums512-glbregs", "syscon", 253 + "simple-mfd"; 254 + reg = <0 0x323b0000 0 0x3000>; 255 + #address-cells = <1>; 256 + #size-cells = <1>; 257 + ranges = <0 0 0x323b0000 0x3000>; 258 + 259 + mpll1: clock-controller@0 { 260 + compatible = "sprd,ums512-g2-pll"; 261 + reg = <0x0 0x100>; 262 + #clock-cells = <1>; 263 + }; 264 + }; 265 + 266 + anlg_phy_g3_regs: syscon@323c0000 { 267 + compatible = "sprd,ums512-glbregs", "syscon", 268 + "simple-mfd"; 269 + reg = <0 0x323c0000 0 0x3000>; 270 + #address-cells = <1>; 271 + #size-cells = <1>; 272 + ranges = <0 0 0x323c0000 0x3000>; 273 + 274 + pll1: clock-controller@0 { 275 + compatible = "sprd,ums512-g3-pll"; 276 + reg = <0x0 0x3000>; 277 + clocks = <&ext_26m>; 278 + clock-names = "ext-26m"; 279 + #clock-cells = <1>; 280 + }; 281 + }; 282 + 283 + anlg_phy_gc_regs: syscon@323e0000 { 284 + compatible = "sprd,ums512-glbregs", "syscon", 285 + "simple-mfd"; 286 + reg = <0 0x323e0000 0 0x3000>; 287 + #address-cells = <1>; 288 + #size-cells = <1>; 289 + ranges = <0 0 0x323e0000 0x3000>; 290 + 291 + pll2: clock-controller@0 { 292 + compatible = "sprd,ums512-gc-pll"; 293 + reg = <0x0 0x100>; 294 + clock-names = "ext-26m"; 295 + #clock-cells = <1>; 296 + }; 297 + }; 298 + 299 + anlg_phy_g10_regs: syscon@323f0000 { 300 + compatible = "sprd,ums512-glbregs", "syscon", 301 + "simple-mfd"; 302 + reg = <0 0x323f0000 0 0x3000>; 303 + }; 304 + 305 + aon_apb_regs: syscon@327d0000 { 306 + compatible = "sprd,ums512-glbregs", "syscon", 307 + "simple-mfd"; 308 + reg = <0 0x327d0000 0 0x3000>; 309 + #address-cells = <1>; 310 + #size-cells = <1>; 311 + ranges = <0 0 0x327d0000 0x3000>; 312 + 313 + aonapb_gate: clock-controller@0 { 314 + compatible = "sprd,ums512-aon-gate"; 315 + reg = <0x0 0x3000>; 316 + clocks = <&ext_26m>; 317 + clock-names = "ext-26m"; 318 + #clock-cells = <1>; 319 + }; 320 + }; 321 + 322 + pmu_apb_regs: syscon@327e0000 { 323 + compatible = "sprd,ums512-glbregs", "syscon", 324 + "simple-mfd"; 325 + reg = <0 0x327e0000 0 0x3000>; 326 + #address-cells = <1>; 327 + #size-cells = <1>; 328 + ranges = <0 0 0x327e0000 0x3000>; 329 + 330 + pmu_gate: clock-controller@0 { 331 + compatible = "sprd,ums512-pmu-gate"; 332 + reg = <0x0 0x3000>; 333 + clocks = <&ext_26m>; 334 + clock-names = "ext-26m"; 335 + #clock-cells = <1>; 336 + }; 337 + }; 338 + 339 + audcp_apb_regs: syscon@3350d000 { 340 + compatible = "sprd,ums512-glbregs", "syscon", 341 + "simple-mfd"; 342 + reg = <0 0x3350d000 0 0x1000>; 343 + #address-cells = <1>; 344 + #size-cells = <1>; 345 + ranges = <0 0 0x3350d000 0x1000>; 346 + 347 + audcpapb_gate: clock-controller@0 { 348 + compatible = "sprd,ums512-audcpapb-gate"; 349 + reg = <0x0 0x300>; 350 + #clock-cells = <1>; 351 + }; 352 + }; 353 + 354 + audcp_ahb_regs: syscon@335e0000 { 355 + compatible = "sprd,ums512-glbregs", "syscon", 356 + "simple-mfd"; 357 + reg = <0 0x335e0000 0 0x1000>; 358 + #address-cells = <1>; 359 + #size-cells = <1>; 360 + ranges = <0 0 0x335e0000 0x1000>; 361 + 362 + audcpahb_gate: clock-controller@0 { 363 + compatible = "sprd,ums512-audcpahb-gate"; 364 + reg = <0x0 0x300>; 365 + #clock-cells = <1>; 366 + }; 367 + }; 368 + 369 + gpu_apb_regs: syscon@60100000 { 370 + compatible = "sprd,ums512-glbregs", "syscon", 371 + "simple-mfd"; 372 + reg = <0 0x60100000 0 0x3000>; 373 + #address-cells = <1>; 374 + #size-cells = <1>; 375 + ranges = <0 0 0x60100000 0x3000>; 376 + 377 + gpu_clk: clock-controller@0 { 378 + compatible = "sprd,ums512-gpu-clk"; 379 + clocks = <&ext_26m>; 380 + clock-names = "ext-26m"; 381 + reg = <0x0 0x100>; 382 + #clock-cells = <1>; 383 + }; 384 + }; 385 + 386 + gpu_dvfs_apb_regs: syscon@60110000 { 387 + compatible = "sprd,ums512-glbregs", "syscon", 388 + "simple-mfd"; 389 + reg = <0 0x60110000 0 0x3000>; 390 + }; 391 + 392 + mm_ahb_regs: syscon@62200000 { 393 + compatible = "sprd,ums512-glbregs", "syscon", 394 + "simple-mfd"; 395 + reg = <0 0x62200000 0 0x3000>; 396 + #address-cells = <1>; 397 + #size-cells = <1>; 398 + ranges = <0 0 0x62200000 0x3000>; 399 + 400 + mm_gate: clock-controller@0 { 401 + compatible = "sprd,ums512-mm-gate-clk"; 402 + reg = <0x0 0x3000>; 403 + #clock-cells = <1>; 404 + }; 405 + }; 406 + 407 + ap_apb_regs: syscon@71000000 { 408 + compatible = "sprd,ums512-glbregs", "syscon", 409 + "simple-mfd"; 410 + reg = <0 0x71000000 0 0x3000>; 411 + #address-cells = <1>; 412 + #size-cells = <1>; 413 + ranges = <0 0 0x71000000 0x3000>; 414 + 415 + apapb_gate: clock-controller@0 { 416 + compatible = "sprd,ums512-apapb-gate"; 417 + reg = <0x0 0x3000>; 418 + #clock-cells = <1>; 419 + }; 420 + }; 421 + 422 + ap_clk: clock-controller@20200000 { 423 + compatible = "sprd,ums512-ap-clk"; 424 + reg = <0 0x20200000 0 0x1000>; 425 + clocks = <&ext_26m>; 426 + clock-names = "ext-26m"; 427 + #clock-cells = <1>; 428 + }; 429 + 430 + aon_clk: clock-controller@32080000 { 431 + compatible = "sprd,ums512-aonapb-clk"; 432 + reg = <0 0x32080000 0 0x1000>; 433 + clocks = <&ext_26m>, <&ext_32k>, 434 + <&ext_4m>, <&rco_100m>; 435 + clock-names = "ext-26m", "ext-32k", 436 + "ext-4m", "rco-100m"; 437 + #clock-cells = <1>; 438 + }; 439 + 440 + mm_clk: clock-controller@62100000 { 441 + compatible = "sprd,ums512-mm-clk"; 442 + reg = <0 0x62100000 0 0x1000>; 443 + clocks = <&ext_26m>; 444 + clock-names = "ext-26m"; 445 + #clock-cells = <1>; 446 + }; 447 + 448 + /* SoC Funnel */ 449 + funnel@3c002000 { 450 + compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 451 + reg = <0 0x3c002000 0 0x1000>; 452 + clocks = <&ext_26m>; 453 + clock-names = "apb_pclk"; 454 + 455 + out-ports { 456 + port { 457 + funnel_soc_out_port: endpoint { 458 + remote-endpoint = <&etb_in>; 459 + }; 460 + }; 461 + }; 462 + 463 + in-ports { 464 + #address-cells = <1>; 465 + #size-cells = <0>; 466 + 467 + port@1 { 468 + reg = <1>; 469 + funnel_soc_in_port: endpoint { 470 + remote-endpoint = 471 + <&funnel_corinth_out_port>; 472 + }; 473 + }; 474 + }; 475 + }; 476 + 477 + /* SoC ETF */ 478 + soc_etb: etb@3c003000 { 479 + compatible = "arm,coresight-tmc", "arm,primecell"; 480 + reg = <0 0x3c003000 0 0x1000>; 481 + clocks = <&ext_26m>; 482 + clock-names = "apb_pclk"; 483 + 484 + in-ports { 485 + port { 486 + etb_in: endpoint { 487 + remote-endpoint = 488 + <&funnel_soc_out_port>; 489 + }; 490 + }; 491 + }; 492 + }; 493 + 494 + /* AP-CPU Funnel for core3/4/5/7 */ 495 + funnel@3e001000 { 496 + compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 497 + reg = <0 0x3e001000 0 0x1000>; 498 + clocks = <&ext_26m>; 499 + clock-names = "apb_pclk"; 500 + 501 + out-ports { 502 + port { 503 + funnel_corinth_lit_out_port: endpoint { 504 + remote-endpoint = 505 + <&corinth_etf_lit_in>; 506 + }; 507 + }; 508 + }; 509 + 510 + in-ports { 511 + #address-cells = <1>; 512 + #size-cells = <0>; 513 + 514 + port@0 { 515 + reg = <0>; 516 + funnel_core_in_port3: endpoint { 517 + remote-endpoint = <&etm3_out>; 518 + }; 519 + }; 520 + 521 + port@1 { 522 + reg = <1>; 523 + funnel_core_in_port4: endpoint { 524 + remote-endpoint = <&etm4_out>; 525 + }; 526 + }; 527 + 528 + port@2 { 529 + reg = <2>; 530 + funnel_core_in_port5: endpoint { 531 + remote-endpoint = <&etm5_out>; 532 + }; 533 + }; 534 + 535 + port@3 { 536 + reg = <3>; 537 + funnel_core_in_port7: endpoint { 538 + remote-endpoint = <&etm7_out>; 539 + }; 540 + }; 541 + }; 542 + }; 543 + 544 + /* AP-CPU ETF for little cores */ 545 + etf@3e002000 { 546 + compatible = "arm,coresight-tmc", "arm,primecell"; 547 + reg = <0 0x3e002000 0 0x1000>; 548 + clocks = <&ext_26m>; 549 + clock-names = "apb_pclk"; 550 + 551 + out-ports { 552 + port { 553 + corinth_etf_lit_out: endpoint { 554 + remote-endpoint = 555 + <&funnel_corinth_from_lit_in_port>; 556 + }; 557 + }; 558 + }; 559 + 560 + in-ports { 561 + port { 562 + corinth_etf_lit_in: endpoint { 563 + remote-endpoint = 564 + <&funnel_corinth_lit_out_port>; 565 + }; 566 + }; 567 + }; 568 + }; 569 + 570 + /* AP-CPU ETF for big cores */ 571 + etf@3e003000 { 572 + compatible = "arm,coresight-tmc", "arm,primecell"; 573 + reg = <0 0x3e003000 0 0x1000>; 574 + clocks = <&ext_26m>; 575 + clock-names = "apb_pclk"; 576 + 577 + out-ports { 578 + port { 579 + corinth_etf_big_out: endpoint { 580 + remote-endpoint = 581 + <&funnel_corinth_from_big_in_port>; 582 + }; 583 + }; 584 + }; 585 + 586 + in-ports { 587 + port { 588 + corinth_etf_big_in: endpoint { 589 + remote-endpoint = 590 + <&funnel_corinth_big_out_port>; 591 + }; 592 + }; 593 + }; 594 + }; 595 + 596 + /* Funnel to SoC */ 597 + funnel@3e004000 { 598 + compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 599 + reg = <0 0x3e004000 0 0x1000>; 600 + clocks = <&ext_26m>; 601 + clock-names = "apb_pclk"; 602 + 603 + out-ports { 604 + port { 605 + funnel_corinth_out_port: endpoint { 606 + remote-endpoint = 607 + <&funnel_soc_in_port>; 608 + }; 609 + }; 610 + }; 611 + 612 + in-ports { 613 + #address-cells = <1>; 614 + #size-cells = <0>; 615 + 616 + port@0 { 617 + reg = <0>; 618 + funnel_corinth_from_lit_in_port: endpoint { 619 + remote-endpoint = <&corinth_etf_lit_out>; 620 + }; 621 + }; 622 + 623 + port@1 { 624 + reg = <1>; 625 + funnel_corinth_from_big_in_port: endpoint { 626 + remote-endpoint = <&corinth_etf_big_out>; 627 + }; 628 + }; 629 + }; 630 + }; 631 + 632 + /* AP-CPU Funnel for core0/1/2/6 */ 633 + funnel@3e005000 { 634 + compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 635 + reg = <0 0x3e005000 0 0x1000>; 636 + clocks = <&ext_26m>; 637 + clock-names = "apb_pclk"; 638 + 639 + out-ports { 640 + port { 641 + funnel_corinth_big_out_port: endpoint { 642 + remote-endpoint = <&corinth_etf_big_in>; 643 + }; 644 + }; 645 + }; 646 + 647 + in-ports { 648 + #address-cells = <1>; 649 + #size-cells = <0>; 650 + 651 + port@0 { 652 + reg = <0>; 653 + funnel_core_in_port0: endpoint { 654 + remote-endpoint = <&etm0_out>; 655 + }; 656 + }; 657 + 658 + port@1 { 659 + reg = <1>; 660 + funnel_core_in_port1: endpoint { 661 + remote-endpoint = <&etm1_out>; 662 + }; 663 + }; 664 + 665 + port@2 { 666 + reg = <2>; 667 + funnel_core_in_port2: endpoint { 668 + remote-endpoint = <&etm2_out>; 669 + }; 670 + }; 671 + 672 + port@3 { 673 + reg = <3>; 674 + funnel_core_in_port6: endpoint { 675 + remote-endpoint = <&etm6_out>; 676 + }; 677 + }; 678 + }; 679 + }; 680 + 681 + etm0: etm@3f040000 { 682 + compatible = "arm,coresight-etm4x", "arm,primecell"; 683 + reg = <0 0x3f040000 0 0x1000>; 684 + cpu = <&CPU0>; 685 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 686 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 687 + 688 + out-ports { 689 + port { 690 + etm0_out: endpoint { 691 + remote-endpoint = 692 + <&funnel_core_in_port0>; 693 + }; 694 + }; 695 + }; 696 + }; 697 + 698 + etm1: etm@3f140000 { 699 + compatible = "arm,coresight-etm4x", "arm,primecell"; 700 + reg = <0 0x3f140000 0 0x1000>; 701 + cpu = <&CPU1>; 702 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 703 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 704 + 705 + out-ports { 706 + port { 707 + etm1_out: endpoint { 708 + remote-endpoint = 709 + <&funnel_core_in_port1>; 710 + }; 711 + }; 712 + }; 713 + }; 714 + 715 + etm2: etm@3f240000 { 716 + compatible = "arm,coresight-etm4x", "arm,primecell"; 717 + reg = <0 0x3f240000 0 0x1000>; 718 + cpu = <&CPU2>; 719 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 720 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 721 + 722 + out-ports { 723 + port { 724 + etm2_out: endpoint { 725 + remote-endpoint = 726 + <&funnel_core_in_port2>; 727 + }; 728 + }; 729 + }; 730 + }; 731 + 732 + etm3: etm@3f340000 { 733 + compatible = "arm,coresight-etm4x", "arm,primecell"; 734 + reg = <0 0x3f340000 0 0x1000>; 735 + cpu = <&CPU3>; 736 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 737 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 738 + 739 + out-ports { 740 + port { 741 + etm3_out: endpoint { 742 + remote-endpoint = 743 + <&funnel_core_in_port3>; 744 + }; 745 + }; 746 + }; 747 + }; 748 + 749 + etm4: etm@3f440000 { 750 + compatible = "arm,coresight-etm4x", "arm,primecell"; 751 + reg = <0 0x3f440000 0 0x1000>; 752 + cpu = <&CPU4>; 753 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 754 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 755 + 756 + out-ports { 757 + port { 758 + etm4_out: endpoint { 759 + remote-endpoint = 760 + <&funnel_core_in_port4>; 761 + }; 762 + }; 763 + }; 764 + }; 765 + 766 + etm5: etm@3f540000 { 767 + compatible = "arm,coresight-etm4x", "arm,primecell"; 768 + reg = <0 0x3f540000 0 0x1000>; 769 + cpu = <&CPU5>; 770 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 771 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 772 + 773 + out-ports { 774 + port { 775 + etm5_out: endpoint { 776 + remote-endpoint = 777 + <&funnel_core_in_port5>; 778 + }; 779 + }; 780 + }; 781 + }; 782 + 783 + etm6: etm@3f640000 { 784 + compatible = "arm,coresight-etm4x", "arm,primecell"; 785 + reg = <0 0x3f640000 0 0x1000>; 786 + cpu = <&CPU6>; 787 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 788 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 789 + 790 + out-ports { 791 + port { 792 + etm6_out: endpoint { 793 + remote-endpoint = 794 + <&funnel_core_in_port6>; 795 + }; 796 + }; 797 + }; 798 + }; 799 + 800 + etm7: etm@3f740000 { 801 + compatible = "arm,coresight-etm4x", "arm,primecell"; 802 + reg = <0 0x3f740000 0 0x1000>; 803 + cpu = <&CPU7>; 804 + clocks = <&ext_26m>, <&aon_clk CLK_CSSYS>, <&pll2 CLK_TWPLL_512M>; 805 + clock-names = "apb_pclk", "clk_cs", "cs_src"; 806 + 807 + out-ports { 808 + port { 809 + etm7_out: endpoint { 810 + remote-endpoint = 811 + <&funnel_core_in_port7>; 812 + }; 813 + }; 814 + }; 815 + }; 816 + 817 + apb@70000000 { 818 + compatible = "simple-bus"; 819 + #address-cells = <1>; 820 + #size-cells = <1>; 821 + ranges = <0 0x0 0x70000000 0x10000000>; 822 + 823 + uart0: serial@0 { 824 + compatible = "sprd,ums512-uart", 825 + "sprd,sc9836-uart"; 826 + reg = <0x0 0x100>; 827 + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 828 + clocks = <&ext_26m>; 829 + status = "disabled"; 830 + }; 831 + 832 + uart1: serial@100000 { 833 + compatible = "sprd,ums512-uart", 834 + "sprd,sc9836-uart"; 835 + reg = <0x100000 0x100>; 836 + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 837 + clocks = <&ext_26m>; 838 + status = "disabled"; 839 + }; 840 + 841 + sdio0: mmc@1100000 { 842 + compatible = "sprd,sdhci-r11"; 843 + reg = <0x1100000 0x1000>; 844 + interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; 845 + clock-names = "sdio", "enable"; 846 + clocks = <&ap_clk CLK_SDIO0_2X>, 847 + <&apapb_gate CLK_SDIO0_EB>; 848 + assigned-clocks = <&ap_clk CLK_SDIO0_2X>; 849 + assigned-clock-parents = <&pll1 CLK_RPLL>; 850 + status = "disabled"; 851 + }; 852 + 853 + sdio3: mmc@1400000 { 854 + compatible = "sprd,sdhci-r11"; 855 + reg = <0x1400000 0x1000>; 856 + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 857 + clock-names = "sdio", "enable"; 858 + clocks = <&ap_clk CLK_EMMC_2X>, 859 + <&apapb_gate CLK_EMMC_EB>; 860 + assigned-clocks = <&ap_clk CLK_EMMC_2X>; 861 + assigned-clock-parents = <&pll1 CLK_RPLL>; 862 + status = "disabled"; 863 + }; 864 + }; 865 + 866 + aon: bus@32000000 { 867 + compatible = "simple-bus"; 868 + #address-cells = <1>; 869 + #size-cells = <1>; 870 + ranges = <0 0x0 0x32000000 0x1000000>; 871 + 872 + adi_bus: spi@100000 { 873 + compatible = "sprd,ums512-adi"; 874 + reg = <0x100000 0x100000>; 875 + #address-cells = <1>; 876 + #size-cells = <0>; 877 + sprd,hw-channels = <2 0x18cc>, <3 0x18cc>, <13 0x1854>, <15 0x1874>, 878 + <17 0x1844>,<19 0x1844>, <21 0x1864>, <30 0x1820>, 879 + <35 0x19b8>, <39 0x19ac>; 880 + }; 881 + }; 882 + }; 883 + 884 + ext_26m: clk-26m { 885 + compatible = "fixed-clock"; 886 + #clock-cells = <0>; 887 + clock-frequency = <26000000>; 888 + clock-output-names = "ext-26m"; 889 + }; 890 + 891 + ext_32k: clk-32k { 892 + compatible = "fixed-clock"; 893 + #clock-cells = <0>; 894 + clock-frequency = <32768>; 895 + clock-output-names = "ext-32k"; 896 + }; 897 + 898 + ext_4m: clk-4m { 899 + compatible = "fixed-clock"; 900 + #clock-cells = <0>; 901 + clock-frequency = <4000000>; 902 + clock-output-names = "ext-4m"; 903 + }; 904 + 905 + rco_100m: clk-100m { 906 + compatible = "fixed-clock"; 907 + #clock-cells = <0>; 908 + clock-frequency = <100000000>; 909 + clock-output-names = "rco-100m"; 910 + }; 911 + };