1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * dts file for AppliedMicro (APM) X-Gene Storm SOC 4 * 5 * Copyright (C) 2013, Applied Micro Circuits Corporation 6 */ 7 8/ { 9 compatible = "apm,xgene-storm"; 10 interrupt-parent = <&gic>; 11 #address-cells = <2>; 12 #size-cells = <2>; 13 14 cpus { 15 #address-cells = <2>; 16 #size-cells = <0>; 17 18 cpu@0 { 19 device_type = "cpu"; 20 compatible = "apm,potenza"; 21 reg = <0x0 0x000>; 22 enable-method = "spin-table"; 23 cpu-release-addr = <0x1 0x0000fff8>; 24 next-level-cache = <&xgene_L2_0>; 25 }; 26 cpu@1 { 27 device_type = "cpu"; 28 compatible = "apm,potenza"; 29 reg = <0x0 0x001>; 30 enable-method = "spin-table"; 31 cpu-release-addr = <0x1 0x0000fff8>; 32 next-level-cache = <&xgene_L2_0>; 33 }; 34 cpu@100 { 35 device_type = "cpu"; 36 compatible = "apm,potenza"; 37 reg = <0x0 0x100>; 38 enable-method = "spin-table"; 39 cpu-release-addr = <0x1 0x0000fff8>; 40 next-level-cache = <&xgene_L2_1>; 41 }; 42 cpu@101 { 43 device_type = "cpu"; 44 compatible = "apm,potenza"; 45 reg = <0x0 0x101>; 46 enable-method = "spin-table"; 47 cpu-release-addr = <0x1 0x0000fff8>; 48 next-level-cache = <&xgene_L2_1>; 49 }; 50 cpu@200 { 51 device_type = "cpu"; 52 compatible = "apm,potenza"; 53 reg = <0x0 0x200>; 54 enable-method = "spin-table"; 55 cpu-release-addr = <0x1 0x0000fff8>; 56 next-level-cache = <&xgene_L2_2>; 57 }; 58 cpu@201 { 59 device_type = "cpu"; 60 compatible = "apm,potenza"; 61 reg = <0x0 0x201>; 62 enable-method = "spin-table"; 63 cpu-release-addr = <0x1 0x0000fff8>; 64 next-level-cache = <&xgene_L2_2>; 65 }; 66 cpu@300 { 67 device_type = "cpu"; 68 compatible = "apm,potenza"; 69 reg = <0x0 0x300>; 70 enable-method = "spin-table"; 71 cpu-release-addr = <0x1 0x0000fff8>; 72 next-level-cache = <&xgene_L2_3>; 73 }; 74 cpu@301 { 75 device_type = "cpu"; 76 compatible = "apm,potenza"; 77 reg = <0x0 0x301>; 78 enable-method = "spin-table"; 79 cpu-release-addr = <0x1 0x0000fff8>; 80 next-level-cache = <&xgene_L2_3>; 81 }; 82 xgene_L2_0: l2-cache-0 { 83 compatible = "cache"; 84 }; 85 xgene_L2_1: l2-cache-1 { 86 compatible = "cache"; 87 }; 88 xgene_L2_2: l2-cache-2 { 89 compatible = "cache"; 90 }; 91 xgene_L2_3: l2-cache-3 { 92 compatible = "cache"; 93 }; 94 }; 95 96 gic: interrupt-controller@78010000 { 97 compatible = "arm,cortex-a15-gic"; 98 #interrupt-cells = <3>; 99 interrupt-controller; 100 reg = <0x0 0x78010000 0x0 0x1000>, /* GIC Dist */ 101 <0x0 0x78020000 0x0 0x1000>, /* GIC CPU */ 102 <0x0 0x78040000 0x0 0x2000>, /* GIC VCPU Control */ 103 <0x0 0x78060000 0x0 0x2000>; /* GIC VCPU */ 104 interrupts = <1 9 0xf04>; /* GIC Maintenence IRQ */ 105 }; 106 107 timer { 108 compatible = "arm,armv8-timer"; 109 interrupts = <1 0 0xff08>, /* Secure Phys IRQ */ 110 <1 13 0xff08>, /* Non-secure Phys IRQ */ 111 <1 14 0xff08>, /* Virt IRQ */ 112 <1 15 0xff08>; /* Hyp IRQ */ 113 clock-frequency = <50000000>; 114 }; 115 116 pmu { 117 compatible = "apm,potenza-pmu", "arm,armv8-pmuv3"; 118 interrupts = <1 12 0xff04>; 119 }; 120 121 soc { 122 compatible = "simple-bus"; 123 #address-cells = <2>; 124 #size-cells = <2>; 125 ranges; 126 dma-ranges = <0x0 0x0 0x0 0x0 0x400 0x0>; 127 128 clocks { 129 #address-cells = <2>; 130 #size-cells = <2>; 131 ranges; 132 refclk: refclk { 133 compatible = "fixed-clock"; 134 #clock-cells = <1>; 135 clock-frequency = <100000000>; 136 clock-output-names = "refclk"; 137 }; 138 139 pcppll: pcppll@17000100 { 140 compatible = "apm,xgene-pcppll-clock"; 141 #clock-cells = <1>; 142 clocks = <&refclk 0>; 143 clock-names = "pcppll"; 144 reg = <0x0 0x17000100 0x0 0x1000>; 145 clock-output-names = "pcppll"; 146 type = <0>; 147 }; 148 149 socpll: socpll@17000120 { 150 compatible = "apm,xgene-socpll-clock"; 151 #clock-cells = <1>; 152 clocks = <&refclk 0>; 153 clock-names = "socpll"; 154 reg = <0x0 0x17000120 0x0 0x1000>; 155 clock-output-names = "socpll"; 156 type = <1>; 157 }; 158 159 socplldiv2: socplldiv2 { 160 compatible = "fixed-factor-clock"; 161 #clock-cells = <1>; 162 clocks = <&socpll 0>; 163 clock-names = "socplldiv2"; 164 clock-mult = <1>; 165 clock-div = <2>; 166 clock-output-names = "socplldiv2"; 167 }; 168 169 ahbclk: ahbclk@17000000 { 170 compatible = "apm,xgene-device-clock"; 171 #clock-cells = <1>; 172 clocks = <&socplldiv2 0>; 173 reg = <0x0 0x17000000 0x0 0x2000>; 174 reg-names = "div-reg"; 175 divider-offset = <0x164>; 176 divider-width = <0x5>; 177 divider-shift = <0x0>; 178 clock-output-names = "ahbclk"; 179 }; 180 181 sdioclk: sdioclk@1f2ac000 { 182 compatible = "apm,xgene-device-clock"; 183 #clock-cells = <1>; 184 clocks = <&socplldiv2 0>; 185 reg = <0x0 0x1f2ac000 0x0 0x1000 186 0x0 0x17000000 0x0 0x2000>; 187 reg-names = "csr-reg", "div-reg"; 188 csr-offset = <0x0>; 189 csr-mask = <0x2>; 190 enable-offset = <0x8>; 191 enable-mask = <0x2>; 192 divider-offset = <0x178>; 193 divider-width = <0x8>; 194 divider-shift = <0x0>; 195 clock-output-names = "sdioclk"; 196 }; 197 198 ethclk: ethclk { 199 compatible = "apm,xgene-device-clock"; 200 #clock-cells = <1>; 201 clocks = <&socplldiv2 0>; 202 clock-names = "ethclk"; 203 reg = <0x0 0x17000000 0x0 0x1000>; 204 reg-names = "div-reg"; 205 divider-offset = <0x238>; 206 divider-width = <0x9>; 207 divider-shift = <0x0>; 208 clock-output-names = "ethclk"; 209 }; 210 211 menetclk: menetclk { 212 compatible = "apm,xgene-device-clock"; 213 #clock-cells = <1>; 214 clocks = <ðclk 0>; 215 reg = <0x0 0x1702c000 0x0 0x1000>; 216 reg-names = "csr-reg"; 217 clock-output-names = "menetclk"; 218 }; 219 220 sge0clk: sge0clk@1f21c000 { 221 compatible = "apm,xgene-device-clock"; 222 #clock-cells = <1>; 223 clocks = <&socplldiv2 0>; 224 reg = <0x0 0x1f21c000 0x0 0x1000>; 225 reg-names = "csr-reg"; 226 csr-mask = <0xa>; 227 enable-mask = <0xf>; 228 clock-output-names = "sge0clk"; 229 }; 230 231 xge0clk: xge0clk@1f61c000 { 232 compatible = "apm,xgene-device-clock"; 233 #clock-cells = <1>; 234 clocks = <&socplldiv2 0>; 235 reg = <0x0 0x1f61c000 0x0 0x1000>; 236 reg-names = "csr-reg"; 237 csr-mask = <0x3>; 238 clock-output-names = "xge0clk"; 239 }; 240 241 xge1clk: xge1clk@1f62c000 { 242 compatible = "apm,xgene-device-clock"; 243 status = "disabled"; 244 #clock-cells = <1>; 245 clocks = <&socplldiv2 0>; 246 reg = <0x0 0x1f62c000 0x0 0x1000>; 247 reg-names = "csr-reg"; 248 csr-mask = <0x3>; 249 clock-output-names = "xge1clk"; 250 }; 251 252 sataphy1clk: sataphy1clk@1f21c000 { 253 compatible = "apm,xgene-device-clock"; 254 #clock-cells = <1>; 255 clocks = <&socplldiv2 0>; 256 reg = <0x0 0x1f21c000 0x0 0x1000>; 257 reg-names = "csr-reg"; 258 clock-output-names = "sataphy1clk"; 259 status = "disabled"; 260 csr-offset = <0x4>; 261 csr-mask = <0x00>; 262 enable-offset = <0x0>; 263 enable-mask = <0x06>; 264 }; 265 266 sataphy2clk: sataphy1clk@1f22c000 { 267 compatible = "apm,xgene-device-clock"; 268 #clock-cells = <1>; 269 clocks = <&socplldiv2 0>; 270 reg = <0x0 0x1f22c000 0x0 0x1000>; 271 reg-names = "csr-reg"; 272 clock-output-names = "sataphy2clk"; 273 status = "okay"; 274 csr-offset = <0x4>; 275 csr-mask = <0x3a>; 276 enable-offset = <0x0>; 277 enable-mask = <0x06>; 278 }; 279 280 sataphy3clk: sataphy1clk@1f23c000 { 281 compatible = "apm,xgene-device-clock"; 282 #clock-cells = <1>; 283 clocks = <&socplldiv2 0>; 284 reg = <0x0 0x1f23c000 0x0 0x1000>; 285 reg-names = "csr-reg"; 286 clock-output-names = "sataphy3clk"; 287 status = "okay"; 288 csr-offset = <0x4>; 289 csr-mask = <0x3a>; 290 enable-offset = <0x0>; 291 enable-mask = <0x06>; 292 }; 293 294 sata01clk: sata01clk@1f21c000 { 295 compatible = "apm,xgene-device-clock"; 296 #clock-cells = <1>; 297 clocks = <&socplldiv2 0>; 298 reg = <0x0 0x1f21c000 0x0 0x1000>; 299 reg-names = "csr-reg"; 300 clock-output-names = "sata01clk"; 301 csr-offset = <0x4>; 302 csr-mask = <0x05>; 303 enable-offset = <0x0>; 304 enable-mask = <0x39>; 305 }; 306 307 sata23clk: sata23clk@1f22c000 { 308 compatible = "apm,xgene-device-clock"; 309 #clock-cells = <1>; 310 clocks = <&socplldiv2 0>; 311 reg = <0x0 0x1f22c000 0x0 0x1000>; 312 reg-names = "csr-reg"; 313 clock-output-names = "sata23clk"; 314 csr-offset = <0x4>; 315 csr-mask = <0x05>; 316 enable-offset = <0x0>; 317 enable-mask = <0x39>; 318 }; 319 320 sata45clk: sata45clk@1f23c000 { 321 compatible = "apm,xgene-device-clock"; 322 #clock-cells = <1>; 323 clocks = <&socplldiv2 0>; 324 reg = <0x0 0x1f23c000 0x0 0x1000>; 325 reg-names = "csr-reg"; 326 clock-output-names = "sata45clk"; 327 csr-offset = <0x4>; 328 csr-mask = <0x05>; 329 enable-offset = <0x0>; 330 enable-mask = <0x39>; 331 }; 332 333 rtcclk: rtcclk@17000000 { 334 compatible = "apm,xgene-device-clock"; 335 #clock-cells = <1>; 336 clocks = <&socplldiv2 0>; 337 reg = <0x0 0x17000000 0x0 0x2000>; 338 reg-names = "csr-reg"; 339 csr-offset = <0xc>; 340 csr-mask = <0x2>; 341 enable-offset = <0x10>; 342 enable-mask = <0x2>; 343 clock-output-names = "rtcclk"; 344 }; 345 346 rngpkaclk: rngpkaclk@17000000 { 347 compatible = "apm,xgene-device-clock"; 348 #clock-cells = <1>; 349 clocks = <&socplldiv2 0>; 350 reg = <0x0 0x17000000 0x0 0x2000>; 351 reg-names = "csr-reg"; 352 csr-offset = <0xc>; 353 csr-mask = <0x10>; 354 enable-offset = <0x10>; 355 enable-mask = <0x10>; 356 clock-output-names = "rngpkaclk"; 357 }; 358 359 pcie0clk: pcie0clk@1f2bc000 { 360 status = "disabled"; 361 compatible = "apm,xgene-device-clock"; 362 #clock-cells = <1>; 363 clocks = <&socplldiv2 0>; 364 reg = <0x0 0x1f2bc000 0x0 0x1000>; 365 reg-names = "csr-reg"; 366 clock-output-names = "pcie0clk"; 367 }; 368 369 pcie1clk: pcie1clk@1f2cc000 { 370 status = "disabled"; 371 compatible = "apm,xgene-device-clock"; 372 #clock-cells = <1>; 373 clocks = <&socplldiv2 0>; 374 reg = <0x0 0x1f2cc000 0x0 0x1000>; 375 reg-names = "csr-reg"; 376 clock-output-names = "pcie1clk"; 377 }; 378 379 pcie2clk: pcie2clk@1f2dc000 { 380 status = "disabled"; 381 compatible = "apm,xgene-device-clock"; 382 #clock-cells = <1>; 383 clocks = <&socplldiv2 0>; 384 reg = <0x0 0x1f2dc000 0x0 0x1000>; 385 reg-names = "csr-reg"; 386 clock-output-names = "pcie2clk"; 387 }; 388 389 pcie3clk: pcie3clk@1f50c000 { 390 status = "disabled"; 391 compatible = "apm,xgene-device-clock"; 392 #clock-cells = <1>; 393 clocks = <&socplldiv2 0>; 394 reg = <0x0 0x1f50c000 0x0 0x1000>; 395 reg-names = "csr-reg"; 396 clock-output-names = "pcie3clk"; 397 }; 398 399 pcie4clk: pcie4clk@1f51c000 { 400 status = "disabled"; 401 compatible = "apm,xgene-device-clock"; 402 #clock-cells = <1>; 403 clocks = <&socplldiv2 0>; 404 reg = <0x0 0x1f51c000 0x0 0x1000>; 405 reg-names = "csr-reg"; 406 clock-output-names = "pcie4clk"; 407 }; 408 409 dmaclk: dmaclk@1f27c000 { 410 compatible = "apm,xgene-device-clock"; 411 #clock-cells = <1>; 412 clocks = <&socplldiv2 0>; 413 reg = <0x0 0x1f27c000 0x0 0x1000>; 414 reg-names = "csr-reg"; 415 clock-output-names = "dmaclk"; 416 }; 417 }; 418 419 msi: msi@79000000 { 420 compatible = "apm,xgene1-msi"; 421 msi-controller; 422 reg = <0x00 0x79000000 0x0 0x900000>; 423 interrupts = < 0x0 0x10 0x4 424 0x0 0x11 0x4 425 0x0 0x12 0x4 426 0x0 0x13 0x4 427 0x0 0x14 0x4 428 0x0 0x15 0x4 429 0x0 0x16 0x4 430 0x0 0x17 0x4 431 0x0 0x18 0x4 432 0x0 0x19 0x4 433 0x0 0x1a 0x4 434 0x0 0x1b 0x4 435 0x0 0x1c 0x4 436 0x0 0x1d 0x4 437 0x0 0x1e 0x4 438 0x0 0x1f 0x4>; 439 }; 440 441 scu: system-clk-controller@17000000 { 442 compatible = "apm,xgene-scu","syscon"; 443 reg = <0x0 0x17000000 0x0 0x400>; 444 }; 445 446 reboot: reboot@17000014 { 447 compatible = "syscon-reboot"; 448 regmap = <&scu>; 449 offset = <0x14>; 450 mask = <0x1>; 451 }; 452 453 csw: csw@7e200000 { 454 compatible = "apm,xgene-csw", "syscon"; 455 reg = <0x0 0x7e200000 0x0 0x1000>; 456 }; 457 458 mcba: mcba@7e700000 { 459 compatible = "apm,xgene-mcb", "syscon"; 460 reg = <0x0 0x7e700000 0x0 0x1000>; 461 }; 462 463 mcbb: mcbb@7e720000 { 464 compatible = "apm,xgene-mcb", "syscon"; 465 reg = <0x0 0x7e720000 0x0 0x1000>; 466 }; 467 468 efuse: efuse@1054a000 { 469 compatible = "apm,xgene-efuse", "syscon"; 470 reg = <0x0 0x1054a000 0x0 0x20>; 471 }; 472 473 rb: rb@7e000000 { 474 compatible = "apm,xgene-rb", "syscon"; 475 reg = <0x0 0x7e000000 0x0 0x10>; 476 }; 477 478 edac@78800000 { 479 compatible = "apm,xgene-edac"; 480 #address-cells = <2>; 481 #size-cells = <2>; 482 ranges; 483 regmap-csw = <&csw>; 484 regmap-mcba = <&mcba>; 485 regmap-mcbb = <&mcbb>; 486 regmap-efuse = <&efuse>; 487 regmap-rb = <&rb>; 488 reg = <0x0 0x78800000 0x0 0x100>; 489 interrupts = <0x0 0x20 0x4>, 490 <0x0 0x21 0x4>, 491 <0x0 0x27 0x4>; 492 493 edacmc@7e800000 { 494 compatible = "apm,xgene-edac-mc"; 495 reg = <0x0 0x7e800000 0x0 0x1000>; 496 memory-controller = <0>; 497 }; 498 499 edacmc@7e840000 { 500 compatible = "apm,xgene-edac-mc"; 501 reg = <0x0 0x7e840000 0x0 0x1000>; 502 memory-controller = <1>; 503 }; 504 505 edacmc@7e880000 { 506 compatible = "apm,xgene-edac-mc"; 507 reg = <0x0 0x7e880000 0x0 0x1000>; 508 memory-controller = <2>; 509 }; 510 511 edacmc@7e8c0000 { 512 compatible = "apm,xgene-edac-mc"; 513 reg = <0x0 0x7e8c0000 0x0 0x1000>; 514 memory-controller = <3>; 515 }; 516 517 edacpmd@7c000000 { 518 compatible = "apm,xgene-edac-pmd"; 519 reg = <0x0 0x7c000000 0x0 0x200000>; 520 pmd-controller = <0>; 521 }; 522 523 edacpmd@7c200000 { 524 compatible = "apm,xgene-edac-pmd"; 525 reg = <0x0 0x7c200000 0x0 0x200000>; 526 pmd-controller = <1>; 527 }; 528 529 edacpmd@7c400000 { 530 compatible = "apm,xgene-edac-pmd"; 531 reg = <0x0 0x7c400000 0x0 0x200000>; 532 pmd-controller = <2>; 533 }; 534 535 edacpmd@7c600000 { 536 compatible = "apm,xgene-edac-pmd"; 537 reg = <0x0 0x7c600000 0x0 0x200000>; 538 pmd-controller = <3>; 539 }; 540 541 edacl3@7e600000 { 542 compatible = "apm,xgene-edac-l3"; 543 reg = <0x0 0x7e600000 0x0 0x1000>; 544 }; 545 546 edacsoc@7e930000 { 547 compatible = "apm,xgene-edac-soc-v1"; 548 reg = <0x0 0x7e930000 0x0 0x1000>; 549 }; 550 }; 551 552 pmu: pmu@78810000 { 553 compatible = "apm,xgene-pmu-v2"; 554 #address-cells = <2>; 555 #size-cells = <2>; 556 ranges; 557 regmap-csw = <&csw>; 558 regmap-mcba = <&mcba>; 559 regmap-mcbb = <&mcbb>; 560 reg = <0x0 0x78810000 0x0 0x1000>; 561 interrupts = <0x0 0x22 0x4>; 562 563 pmul3c@7e610000 { 564 compatible = "apm,xgene-pmu-l3c"; 565 reg = <0x0 0x7e610000 0x0 0x1000>; 566 }; 567 568 pmuiob@7e940000 { 569 compatible = "apm,xgene-pmu-iob"; 570 reg = <0x0 0x7e940000 0x0 0x1000>; 571 }; 572 573 pmucmcb@7e710000 { 574 compatible = "apm,xgene-pmu-mcb"; 575 reg = <0x0 0x7e710000 0x0 0x1000>; 576 enable-bit-index = <0>; 577 }; 578 579 pmucmcb@7e730000 { 580 compatible = "apm,xgene-pmu-mcb"; 581 reg = <0x0 0x7e730000 0x0 0x1000>; 582 enable-bit-index = <1>; 583 }; 584 585 pmucmc@7e810000 { 586 compatible = "apm,xgene-pmu-mc"; 587 reg = <0x0 0x7e810000 0x0 0x1000>; 588 enable-bit-index = <0>; 589 }; 590 591 pmucmc@7e850000 { 592 compatible = "apm,xgene-pmu-mc"; 593 reg = <0x0 0x7e850000 0x0 0x1000>; 594 enable-bit-index = <1>; 595 }; 596 597 pmucmc@7e890000 { 598 compatible = "apm,xgene-pmu-mc"; 599 reg = <0x0 0x7e890000 0x0 0x1000>; 600 enable-bit-index = <2>; 601 }; 602 603 pmucmc@7e8d0000 { 604 compatible = "apm,xgene-pmu-mc"; 605 reg = <0x0 0x7e8d0000 0x0 0x1000>; 606 enable-bit-index = <3>; 607 }; 608 }; 609 610 pcie0: pcie@1f2b0000 { 611 status = "disabled"; 612 device_type = "pci"; 613 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 614 #interrupt-cells = <1>; 615 #size-cells = <2>; 616 #address-cells = <3>; 617 reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */ 618 0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */ 619 reg-names = "csr", "cfg"; 620 ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000 /* io */ 621 0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000 /* mem */ 622 0x43000000 0xf0 0x00000000 0xf0 0x00000000 0x10 0x00000000>; /* mem */ 623 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000 624 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>; 625 bus-range = <0x00 0xff>; 626 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 627 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x4 628 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x4 629 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x4 630 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x4>; 631 dma-coherent; 632 clocks = <&pcie0clk 0>; 633 msi-parent = <&msi>; 634 }; 635 636 pcie1: pcie@1f2c0000 { 637 status = "disabled"; 638 device_type = "pci"; 639 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 640 #interrupt-cells = <1>; 641 #size-cells = <2>; 642 #address-cells = <3>; 643 reg = < 0x00 0x1f2c0000 0x0 0x00010000 /* Controller registers */ 644 0xd0 0xd0000000 0x0 0x00040000>; /* PCI config space */ 645 reg-names = "csr", "cfg"; 646 ranges = <0x01000000 0x00 0x00000000 0xd0 0x10000000 0x00 0x00010000 /* io */ 647 0x02000000 0x00 0x80000000 0xd1 0x80000000 0x00 0x80000000 /* mem */ 648 0x43000000 0xd8 0x00000000 0xd8 0x00000000 0x08 0x00000000>; /* mem */ 649 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000 650 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>; 651 bus-range = <0x00 0xff>; 652 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 653 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc8 0x4 654 0x0 0x0 0x0 0x2 &gic 0x0 0xc9 0x4 655 0x0 0x0 0x0 0x3 &gic 0x0 0xca 0x4 656 0x0 0x0 0x0 0x4 &gic 0x0 0xcb 0x4>; 657 dma-coherent; 658 clocks = <&pcie1clk 0>; 659 msi-parent = <&msi>; 660 }; 661 662 pcie2: pcie@1f2d0000 { 663 status = "disabled"; 664 device_type = "pci"; 665 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 666 #interrupt-cells = <1>; 667 #size-cells = <2>; 668 #address-cells = <3>; 669 reg = < 0x00 0x1f2d0000 0x0 0x00010000 /* Controller registers */ 670 0x90 0xd0000000 0x0 0x00040000>; /* PCI config space */ 671 reg-names = "csr", "cfg"; 672 ranges = <0x01000000 0x00 0x00000000 0x90 0x10000000 0x00 0x00010000 /* io */ 673 0x02000000 0x00 0x80000000 0x91 0x80000000 0x00 0x80000000 /* mem */ 674 0x43000000 0x94 0x00000000 0x94 0x00000000 0x04 0x00000000>; /* mem */ 675 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000 676 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>; 677 bus-range = <0x00 0xff>; 678 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 679 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xce 0x4 680 0x0 0x0 0x0 0x2 &gic 0x0 0xcf 0x4 681 0x0 0x0 0x0 0x3 &gic 0x0 0xd0 0x4 682 0x0 0x0 0x0 0x4 &gic 0x0 0xd1 0x4>; 683 dma-coherent; 684 clocks = <&pcie2clk 0>; 685 msi-parent = <&msi>; 686 }; 687 688 pcie3: pcie@1f500000 { 689 status = "disabled"; 690 device_type = "pci"; 691 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 692 #interrupt-cells = <1>; 693 #size-cells = <2>; 694 #address-cells = <3>; 695 reg = < 0x00 0x1f500000 0x0 0x00010000 /* Controller registers */ 696 0xa0 0xd0000000 0x0 0x00040000>; /* PCI config space */ 697 reg-names = "csr", "cfg"; 698 ranges = <0x01000000 0x00 0x00000000 0xa0 0x10000000 0x00 0x00010000 /* io */ 699 0x02000000 0x00 0x80000000 0xa1 0x80000000 0x00 0x80000000 /* mem */ 700 0x43000000 0xb0 0x00000000 0xb0 0x00000000 0x10 0x00000000>; /* mem */ 701 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000 702 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>; 703 bus-range = <0x00 0xff>; 704 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 705 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xd4 0x4 706 0x0 0x0 0x0 0x2 &gic 0x0 0xd5 0x4 707 0x0 0x0 0x0 0x3 &gic 0x0 0xd6 0x4 708 0x0 0x0 0x0 0x4 &gic 0x0 0xd7 0x4>; 709 dma-coherent; 710 clocks = <&pcie3clk 0>; 711 msi-parent = <&msi>; 712 }; 713 714 pcie4: pcie@1f510000 { 715 status = "disabled"; 716 device_type = "pci"; 717 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie"; 718 #interrupt-cells = <1>; 719 #size-cells = <2>; 720 #address-cells = <3>; 721 reg = < 0x00 0x1f510000 0x0 0x00010000 /* Controller registers */ 722 0xc0 0xd0000000 0x0 0x00200000>; /* PCI config space */ 723 reg-names = "csr", "cfg"; 724 ranges = <0x01000000 0x00 0x00000000 0xc0 0x10000000 0x00 0x00010000 /* io */ 725 0x02000000 0x00 0x80000000 0xc1 0x80000000 0x00 0x80000000 /* mem */ 726 0x43000000 0xc8 0x00000000 0xc8 0x00000000 0x08 0x00000000>; /* mem */ 727 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000 728 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>; 729 bus-range = <0x00 0xff>; 730 interrupt-map-mask = <0x0 0x0 0x0 0x7>; 731 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xda 0x4 732 0x0 0x0 0x0 0x2 &gic 0x0 0xdb 0x4 733 0x0 0x0 0x0 0x3 &gic 0x0 0xdc 0x4 734 0x0 0x0 0x0 0x4 &gic 0x0 0xdd 0x4>; 735 dma-coherent; 736 clocks = <&pcie4clk 0>; 737 msi-parent = <&msi>; 738 }; 739 740 mailbox: mailbox@10540000 { 741 compatible = "apm,xgene-slimpro-mbox"; 742 reg = <0x0 0x10540000 0x0 0xa000>; 743 #mbox-cells = <1>; 744 interrupts = <0x0 0x0 0x4>, 745 <0x0 0x1 0x4>, 746 <0x0 0x2 0x4>, 747 <0x0 0x3 0x4>, 748 <0x0 0x4 0x4>, 749 <0x0 0x5 0x4>, 750 <0x0 0x6 0x4>, 751 <0x0 0x7 0x4>; 752 }; 753 754 i2cslimpro { 755 compatible = "apm,xgene-slimpro-i2c"; 756 mboxes = <&mailbox 0>; 757 }; 758 759 hwmonslimpro { 760 compatible = "apm,xgene-slimpro-hwmon"; 761 mboxes = <&mailbox 7>; 762 }; 763 764 serial0: serial@1c020000 { 765 status = "disabled"; 766 compatible = "ns16550a"; 767 reg = <0 0x1c020000 0x0 0x1000>; 768 reg-shift = <2>; 769 clock-frequency = <10000000>; /* Updated by bootloader */ 770 interrupt-parent = <&gic>; 771 interrupts = <0x0 0x4c 0x4>; 772 }; 773 774 serial1: serial@1c021000 { 775 status = "disabled"; 776 compatible = "ns16550a"; 777 reg = <0 0x1c021000 0x0 0x1000>; 778 reg-shift = <2>; 779 clock-frequency = <10000000>; /* Updated by bootloader */ 780 interrupt-parent = <&gic>; 781 interrupts = <0x0 0x4d 0x4>; 782 }; 783 784 serial2: serial@1c022000 { 785 status = "disabled"; 786 compatible = "ns16550a"; 787 reg = <0 0x1c022000 0x0 0x1000>; 788 reg-shift = <2>; 789 clock-frequency = <10000000>; /* Updated by bootloader */ 790 interrupt-parent = <&gic>; 791 interrupts = <0x0 0x4e 0x4>; 792 }; 793 794 serial3: serial@1c023000 { 795 status = "disabled"; 796 compatible = "ns16550a"; 797 reg = <0 0x1c023000 0x0 0x1000>; 798 reg-shift = <2>; 799 clock-frequency = <10000000>; /* Updated by bootloader */ 800 interrupt-parent = <&gic>; 801 interrupts = <0x0 0x4f 0x4>; 802 }; 803 804 mmc0: mmc@1c000000 { 805 compatible = "arasan,sdhci-4.9a"; 806 reg = <0x0 0x1c000000 0x0 0x100>; 807 interrupts = <0x0 0x49 0x4>; 808 dma-coherent; 809 no-1-8-v; 810 clock-names = "clk_xin", "clk_ahb"; 811 clocks = <&sdioclk 0>, <&ahbclk 0>; 812 }; 813 814 gfcgpio: gpio0@1701c000 { 815 compatible = "apm,xgene-gpio"; 816 reg = <0x0 0x1701c000 0x0 0x40>; 817 gpio-controller; 818 #gpio-cells = <2>; 819 }; 820 821 dwgpio: gpio@1c024000 { 822 compatible = "snps,dw-apb-gpio"; 823 reg = <0x0 0x1c024000 0x0 0x1000>; 824 #address-cells = <1>; 825 #size-cells = <0>; 826 827 porta: gpio-controller@0 { 828 compatible = "snps,dw-apb-gpio-port"; 829 gpio-controller; 830 #gpio-cells = <2>; 831 snps,nr-gpios = <32>; 832 reg = <0>; 833 }; 834 }; 835 836 i2c0: i2c@10512000 { 837 status = "disabled"; 838 #address-cells = <1>; 839 #size-cells = <0>; 840 compatible = "snps,designware-i2c"; 841 reg = <0x0 0x10512000 0x0 0x1000>; 842 interrupts = <0 0x44 0x4>; 843 #clock-cells = <1>; 844 clocks = <&ahbclk 0>; 845 bus_num = <0>; 846 }; 847 848 phy1: phy@1f21a000 { 849 compatible = "apm,xgene-phy"; 850 reg = <0x0 0x1f21a000 0x0 0x100>; 851 #phy-cells = <1>; 852 clocks = <&sataphy1clk 0>; 853 status = "disabled"; 854 apm,tx-boost-gain = <30 30 30 30 30 30>; 855 apm,tx-eye-tuning = <2 10 10 2 10 10>; 856 }; 857 858 phy2: phy@1f22a000 { 859 compatible = "apm,xgene-phy"; 860 reg = <0x0 0x1f22a000 0x0 0x100>; 861 #phy-cells = <1>; 862 clocks = <&sataphy2clk 0>; 863 status = "okay"; 864 apm,tx-boost-gain = <30 30 30 30 30 30>; 865 apm,tx-eye-tuning = <1 10 10 2 10 10>; 866 }; 867 868 phy3: phy@1f23a000 { 869 compatible = "apm,xgene-phy"; 870 reg = <0x0 0x1f23a000 0x0 0x100>; 871 #phy-cells = <1>; 872 clocks = <&sataphy3clk 0>; 873 status = "okay"; 874 apm,tx-boost-gain = <31 31 31 31 31 31>; 875 apm,tx-eye-tuning = <2 10 10 2 10 10>; 876 }; 877 878 sata1: sata@1a000000 { 879 compatible = "apm,xgene-ahci"; 880 reg = <0x0 0x1a000000 0x0 0x1000>, 881 <0x0 0x1f210000 0x0 0x1000>, 882 <0x0 0x1f21d000 0x0 0x1000>, 883 <0x0 0x1f21e000 0x0 0x1000>, 884 <0x0 0x1f217000 0x0 0x1000>; 885 interrupts = <0x0 0x86 0x4>; 886 dma-coherent; 887 status = "disabled"; 888 clocks = <&sata01clk 0>; 889 phys = <&phy1 0>; 890 phy-names = "sata-phy"; 891 }; 892 893 sata2: sata@1a400000 { 894 compatible = "apm,xgene-ahci"; 895 reg = <0x0 0x1a400000 0x0 0x1000>, 896 <0x0 0x1f220000 0x0 0x1000>, 897 <0x0 0x1f22d000 0x0 0x1000>, 898 <0x0 0x1f22e000 0x0 0x1000>, 899 <0x0 0x1f227000 0x0 0x1000>; 900 interrupts = <0x0 0x87 0x4>; 901 dma-coherent; 902 status = "okay"; 903 clocks = <&sata23clk 0>; 904 phys = <&phy2 0>; 905 phy-names = "sata-phy"; 906 }; 907 908 sata3: sata@1a800000 { 909 compatible = "apm,xgene-ahci"; 910 reg = <0x0 0x1a800000 0x0 0x1000>, 911 <0x0 0x1f230000 0x0 0x1000>, 912 <0x0 0x1f23d000 0x0 0x1000>, 913 <0x0 0x1f23e000 0x0 0x1000>; 914 interrupts = <0x0 0x88 0x4>; 915 dma-coherent; 916 status = "okay"; 917 clocks = <&sata45clk 0>; 918 phys = <&phy3 0>; 919 phy-names = "sata-phy"; 920 }; 921 922 /* Node-name might need to be coded as dwusb for backward compatibility */ 923 usb0: usb@19000000 { 924 status = "disabled"; 925 compatible = "snps,dwc3"; 926 reg = <0x0 0x19000000 0x0 0x100000>; 927 interrupts = <0x0 0x89 0x4>; 928 dma-coherent; 929 dr_mode = "host"; 930 }; 931 932 usb1: usb@19800000 { 933 status = "disabled"; 934 compatible = "snps,dwc3"; 935 reg = <0x0 0x19800000 0x0 0x100000>; 936 interrupts = <0x0 0x8a 0x4>; 937 dma-coherent; 938 dr_mode = "host"; 939 }; 940 941 sbgpio: gpio@17001000{ 942 compatible = "apm,xgene-gpio-sb"; 943 reg = <0x0 0x17001000 0x0 0x400>; 944 #gpio-cells = <2>; 945 gpio-controller; 946 interrupts = <0x0 0x28 0x1>, 947 <0x0 0x29 0x1>, 948 <0x0 0x2a 0x1>, 949 <0x0 0x2b 0x1>, 950 <0x0 0x2c 0x1>, 951 <0x0 0x2d 0x1>; 952 interrupt-parent = <&gic>; 953 #interrupt-cells = <2>; 954 interrupt-controller; 955 }; 956 957 rtc: rtc@10510000 { 958 compatible = "apm,xgene-rtc"; 959 reg = <0x0 0x10510000 0x0 0x400>; 960 interrupts = <0x0 0x46 0x4>; 961 #clock-cells = <1>; 962 clocks = <&rtcclk 0>; 963 }; 964 965 mdio: mdio@17020000 { 966 compatible = "apm,xgene-mdio-rgmii"; 967 #address-cells = <1>; 968 #size-cells = <0>; 969 reg = <0x0 0x17020000 0x0 0xd100>; 970 clocks = <&menetclk 0>; 971 }; 972 973 menet: ethernet@17020000 { 974 compatible = "apm,xgene-enet"; 975 status = "disabled"; 976 reg = <0x0 0x17020000 0x0 0xd100>, 977 <0x0 0x17030000 0x0 0xc300>, 978 <0x0 0x10000000 0x0 0x200>; 979 reg-names = "enet_csr", "ring_csr", "ring_cmd"; 980 interrupts = <0x0 0x3c 0x4>; 981 dma-coherent; 982 clocks = <&menetclk 0>; 983 /* mac address will be overwritten by the bootloader */ 984 local-mac-address = [00 00 00 00 00 00]; 985 phy-connection-type = "rgmii"; 986 phy-handle = <&menetphy>,<&menet0phy>; 987 mdio { 988 compatible = "apm,xgene-mdio"; 989 #address-cells = <1>; 990 #size-cells = <0>; 991 menetphy: menetphy@3 { 992 compatible = "ethernet-phy-id001c.c915"; 993 reg = <0x3>; 994 }; 995 996 }; 997 }; 998 999 sgenet0: ethernet@1f210000 { 1000 compatible = "apm,xgene1-sgenet"; 1001 status = "disabled"; 1002 reg = <0x0 0x1f210000 0x0 0xd100>, 1003 <0x0 0x1f200000 0x0 0xc300>, 1004 <0x0 0x1b000000 0x0 0x200>; 1005 reg-names = "enet_csr", "ring_csr", "ring_cmd"; 1006 interrupts = <0x0 0xa0 0x4>, 1007 <0x0 0xa1 0x4>; 1008 dma-coherent; 1009 clocks = <&sge0clk 0>; 1010 local-mac-address = [00 00 00 00 00 00]; 1011 phy-connection-type = "sgmii"; 1012 phy-handle = <&sgenet0phy>; 1013 }; 1014 1015 sgenet1: ethernet@1f210030 { 1016 compatible = "apm,xgene1-sgenet"; 1017 status = "disabled"; 1018 reg = <0x0 0x1f210030 0x0 0xd100>, 1019 <0x0 0x1f200000 0x0 0xc300>, 1020 <0x0 0x1b000000 0x0 0x8000>; 1021 reg-names = "enet_csr", "ring_csr", "ring_cmd"; 1022 interrupts = <0x0 0xac 0x4>, 1023 <0x0 0xad 0x4>; 1024 port-id = <1>; 1025 dma-coherent; 1026 local-mac-address = [00 00 00 00 00 00]; 1027 phy-connection-type = "sgmii"; 1028 phy-handle = <&sgenet1phy>; 1029 }; 1030 1031 xgenet: ethernet@1f610000 { 1032 compatible = "apm,xgene1-xgenet"; 1033 status = "disabled"; 1034 reg = <0x0 0x1f610000 0x0 0xd100>, 1035 <0x0 0x1f600000 0x0 0xc300>, 1036 <0x0 0x18000000 0x0 0x200>; 1037 reg-names = "enet_csr", "ring_csr", "ring_cmd"; 1038 interrupts = <0x0 0x60 0x4>, 1039 <0x0 0x61 0x4>, 1040 <0x0 0x62 0x4>, 1041 <0x0 0x63 0x4>, 1042 <0x0 0x64 0x4>, 1043 <0x0 0x65 0x4>, 1044 <0x0 0x66 0x4>, 1045 <0x0 0x67 0x4>; 1046 channel = <0>; 1047 dma-coherent; 1048 clocks = <&xge0clk 0>; 1049 /* mac address will be overwritten by the bootloader */ 1050 local-mac-address = [00 00 00 00 00 00]; 1051 phy-connection-type = "xgmii"; 1052 }; 1053 1054 xgenet1: ethernet@1f620000 { 1055 compatible = "apm,xgene1-xgenet"; 1056 status = "disabled"; 1057 reg = <0x0 0x1f620000 0x0 0xd100>, 1058 <0x0 0x1f600000 0x0 0xc300>, 1059 <0x0 0x18000000 0x0 0x8000>; 1060 reg-names = "enet_csr", "ring_csr", "ring_cmd"; 1061 interrupts = <0x0 0x6c 0x4>, 1062 <0x0 0x6d 0x4>; 1063 port-id = <1>; 1064 dma-coherent; 1065 clocks = <&xge1clk 0>; 1066 /* mac address will be overwritten by the bootloader */ 1067 local-mac-address = [00 00 00 00 00 00]; 1068 phy-connection-type = "xgmii"; 1069 }; 1070 1071 rng: rng@10520000 { 1072 compatible = "apm,xgene-rng"; 1073 reg = <0x0 0x10520000 0x0 0x100>; 1074 interrupts = <0x0 0x41 0x4>; 1075 clocks = <&rngpkaclk 0>; 1076 }; 1077 1078 dma: dma@1f270000 { 1079 compatible = "apm,xgene-storm-dma"; 1080 device_type = "dma"; 1081 reg = <0x0 0x1f270000 0x0 0x10000>, 1082 <0x0 0x1f200000 0x0 0x10000>, 1083 <0x0 0x1b000000 0x0 0x400000>, 1084 <0x0 0x1054a000 0x0 0x100>; 1085 interrupts = <0x0 0x82 0x4>, 1086 <0x0 0xb8 0x4>, 1087 <0x0 0xb9 0x4>, 1088 <0x0 0xba 0x4>, 1089 <0x0 0xbb 0x4>; 1090 dma-coherent; 1091 clocks = <&dmaclk 0>; 1092 }; 1093 }; 1094}; 1095