0001 /*
0002 * Device Tree Source for FSP2
0003 *
0004 * Copyright 2010,2012 IBM Corp.
0005 *
0006 * This file is licensed under the terms of the GNU General Public
0007 * License version 2. This program is licensed "as is" without
0008 * any warranty of any kind, whether express or implied.
0009 */
0010
0011
0012 /dts-v1/;
0013
0014 / {
0015 #address-cells = <2>;
0016 #size-cells = <1>;
0017 model = "ibm,fsp2";
0018 compatible = "ibm,fsp2";
0019 dcr-parent = <&{/cpus/cpu@0}>;
0020
0021 aliases {
0022 ethernet0 = &EMAC0;
0023 ethernet1 = &EMAC1;
0024 serial0 = &UART0;
0025 };
0026
0027 cpus {
0028 #address-cells = <1>;
0029 #size-cells = <0>;
0030
0031 cpu@0 {
0032 device_type = "cpu";
0033 model = "PowerPC, 476FSP2";
0034 reg = <0x0>;
0035 clock-frequency = <0>; /* Filled in by cuboot */
0036 timebase-frequency = <0>; /* Filled in by cuboot */
0037 i-cache-line-size = <32>;
0038 d-cache-line-size = <32>;
0039 d-cache-size = <32768>;
0040 i-cache-size = <32768>;
0041 dcr-controller;
0042 dcr-access-method = "native";
0043 };
0044 };
0045
0046 memory {
0047 device_type = "memory";
0048 reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by
0049 cuboot */
0050 };
0051
0052 clocks {
0053 mmc_clk: mmc_clk {
0054 compatible = "fixed-clock";
0055 #clock-cells = <0>;
0056 clock-frequency = <50000000>;
0057 clock-output-names = "mmc_clk";
0058 };
0059 };
0060
0061 UIC0: uic0 {
0062 #address-cells = <0>;
0063 #size-cells = <0>;
0064 #interrupt-cells = <2>;
0065 compatible = "ibm,uic";
0066 interrupt-controller;
0067 cell-index = <0>;
0068 dcr-reg = <0x2c0 0x8>;
0069 };
0070
0071 /* "interrupts" field is <bit level bit level>
0072 first pair is non-critical, second is critical */
0073 UIC1_0: uic1_0 {
0074 #address-cells = <0>;
0075 #size-cells = <0>;
0076 #interrupt-cells = <2>;
0077
0078 compatible = "ibm,uic";
0079 interrupt-controller;
0080 cell-index = <1>;
0081 dcr-reg = <0x2c8 0x8>;
0082 interrupt-parent = <&UIC0>;
0083 interrupts = <21 0x4 4 0x84>;
0084 };
0085
0086 /* PSI and DMA */
0087 UIC1_1: uic1_1 {
0088 #address-cells = <0>;
0089 #size-cells = <0>;
0090 #interrupt-cells = <2>;
0091
0092 compatible = "ibm,uic";
0093 interrupt-controller;
0094 cell-index = <2>;
0095 dcr-reg = <0x350 0x8>;
0096 interrupt-parent = <&UIC0>;
0097 interrupts = <22 0x4 5 0x84>;
0098 };
0099
0100 /* Ethernet and USB */
0101 UIC1_2: uic1_2 {
0102 #address-cells = <0>;
0103 #size-cells = <0>;
0104 #interrupt-cells = <2>;
0105
0106 compatible = "ibm,uic";
0107 interrupt-controller;
0108 cell-index = <3>;
0109 dcr-reg = <0x358 0x8>;
0110 interrupt-parent = <&UIC0>;
0111 interrupts = <23 0x4 6 0x84>;
0112 };
0113
0114 /* PLB Errors */
0115 UIC1_3: uic1_3 {
0116 #address-cells = <0>;
0117 #size-cells = <0>;
0118 #interrupt-cells = <2>;
0119
0120 compatible = "ibm,uic";
0121 interrupt-controller;
0122 cell-index = <4>;
0123 dcr-reg = <0x360 0x8>;
0124 interrupt-parent = <&UIC0>;
0125 interrupts = <24 0x4 7 0x84>;
0126 };
0127
0128 UIC1_4: uic1_4 {
0129 #address-cells = <0>;
0130 #size-cells = <0>;
0131 #interrupt-cells = <2>;
0132
0133 compatible = "ibm,uic";
0134 interrupt-controller;
0135 cell-index = <5>;
0136 dcr-reg = <0x368 0x8>;
0137 interrupt-parent = <&UIC0>;
0138 interrupts = <25 0x4 8 0x84>;
0139 };
0140
0141 UIC1_5: uic1_5 {
0142 #address-cells = <0>;
0143 #size-cells = <0>;
0144 #interrupt-cells = <2>;
0145
0146 compatible = "ibm,uic";
0147 interrupt-controller;
0148 cell-index = <6>;
0149 dcr-reg = <0x370 0x8>;
0150 interrupt-parent = <&UIC0>;
0151 interrupts = <26 0x4 9 0x84>;
0152 };
0153
0154 /* 2nd level UICs for FSI */
0155 UIC2_0: uic2_0 {
0156 #address-cells = <0>;
0157 #size-cells = <0>;
0158 #interrupt-cells = <2>;
0159
0160 compatible = "ibm,uic";
0161 interrupt-controller;
0162 cell-index = <7>;
0163 dcr-reg = <0x2d0 0x8>;
0164 interrupt-parent = <&UIC1_0>;
0165 interrupts = <16 0x4 0 0x84>;
0166 };
0167
0168 UIC2_1: uic2_1 {
0169 #address-cells = <0>;
0170 #size-cells = <0>;
0171 #interrupt-cells = <2>;
0172
0173 compatible = "ibm,uic";
0174 interrupt-controller;
0175 cell-index = <8>;
0176 dcr-reg = <0x2d8 0x8>;
0177 interrupt-parent = <&UIC1_0>;
0178 interrupts = <17 0x4 1 0x84>;
0179 };
0180
0181 UIC2_2: uic2_2 {
0182 #address-cells = <0>;
0183 #size-cells = <0>;
0184 #interrupt-cells = <2>;
0185
0186 compatible = "ibm,uic";
0187 interrupt-controller;
0188 cell-index = <9>;
0189 dcr-reg = <0x2e0 0x8>;
0190 interrupt-parent = <&UIC1_0>;
0191 interrupts = <18 0x4 2 0x84>;
0192 };
0193
0194 UIC2_3: uic2_3 {
0195 #address-cells = <0>;
0196 #size-cells = <0>;
0197 #interrupt-cells = <2>;
0198
0199 compatible = "ibm,uic";
0200 interrupt-controller;
0201 cell-index = <10>;
0202 dcr-reg = <0x2e8 0x8>;
0203 interrupt-parent = <&UIC1_0>;
0204 interrupts = <19 0x4 3 0x84>;
0205 };
0206
0207 UIC2_4: uic2_4 {
0208 #address-cells = <0>;
0209 #size-cells = <0>;
0210 #interrupt-cells = <2>;
0211
0212 compatible = "ibm,uic";
0213 interrupt-controller;
0214 cell-index = <11>;
0215 dcr-reg = <0x2f0 0x8>;
0216 interrupt-parent = <&UIC1_0>;
0217 interrupts = <20 0x4 4 0x84>;
0218 };
0219
0220 UIC2_5: uic2_5 {
0221 #address-cells = <0>;
0222 #size-cells = <0>;
0223 #interrupt-cells = <2>;
0224
0225 compatible = "ibm,uic";
0226 interrupt-controller;
0227 cell-index = <12>;
0228 dcr-reg = <0x2f8 0x8>;
0229 interrupt-parent = <&UIC1_0>;
0230 interrupts = <21 0x4 5 0x84>;
0231 };
0232
0233 UIC2_6: uic2_6 {
0234 #address-cells = <0>;
0235 #size-cells = <0>;
0236 #interrupt-cells = <2>;
0237
0238 compatible = "ibm,uic";
0239 interrupt-controller;
0240 cell-index = <13>;
0241 dcr-reg = <0x300 0x8>;
0242 interrupt-parent = <&UIC1_0>;
0243 interrupts = <22 0x4 6 0x84>;
0244 };
0245
0246 UIC2_7: uic2_7 {
0247 #address-cells = <0>;
0248 #size-cells = <0>;
0249 #interrupt-cells = <2>;
0250
0251 compatible = "ibm,uic";
0252 interrupt-controller;
0253 cell-index = <14>;
0254 dcr-reg = <0x308 0x8>;
0255 interrupt-parent = <&UIC1_0>;
0256 interrupts = <23 0x4 7 0x84>;
0257 };
0258
0259 UIC2_8: uic2_8 {
0260 #address-cells = <0>;
0261 #size-cells = <0>;
0262 #interrupt-cells = <2>;
0263
0264 compatible = "ibm,uic";
0265 interrupt-controller;
0266 cell-index = <15>;
0267 dcr-reg = <0x310 0x8>;
0268 interrupt-parent = <&UIC1_0>;
0269 interrupts = <24 0x4 8 0x84>;
0270 };
0271
0272 UIC2_9: uic2_9 {
0273 #address-cells = <0>;
0274 #size-cells = <0>;
0275 #interrupt-cells = <2>;
0276
0277 compatible = "ibm,uic";
0278 interrupt-controller;
0279 cell-index = <16>;
0280 dcr-reg = <0x318 0x8>;
0281 interrupt-parent = <&UIC1_0>;
0282 interrupts = <25 0x4 9 0x84>;
0283 };
0284
0285 UIC2_10: uic2_10 {
0286 #address-cells = <0>;
0287 #size-cells = <0>;
0288 #interrupt-cells = <2>;
0289
0290 compatible = "ibm,uic";
0291 interrupt-controller;
0292 cell-index = <17>;
0293 dcr-reg = <0x320 0x8>;
0294 interrupt-parent = <&UIC1_0>;
0295 interrupts = <26 0x4 10 0x84>;
0296 };
0297
0298 UIC2_11: uic2_11 {
0299 #address-cells = <0>;
0300 #size-cells = <0>;
0301 #interrupt-cells = <2>;
0302
0303 compatible = "ibm,uic";
0304 interrupt-controller;
0305 cell-index = <18>;
0306 dcr-reg = <0x328 0x8>;
0307 interrupt-parent = <&UIC1_0>;
0308 interrupts = <27 0x4 11 0x84>;
0309 };
0310
0311 UIC2_12: uic2_12 {
0312 #address-cells = <0>;
0313 #size-cells = <0>;
0314 #interrupt-cells = <2>;
0315
0316 compatible = "ibm,uic";
0317 interrupt-controller;
0318 cell-index = <19>;
0319 dcr-reg = <0x330 0x8>;
0320 interrupt-parent = <&UIC1_0>;
0321 interrupts = <28 0x4 12 0x84>;
0322 };
0323
0324 UIC2_13: uic2_13 {
0325 #address-cells = <0>;
0326 #size-cells = <0>;
0327 #interrupt-cells = <2>;
0328
0329 compatible = "ibm,uic";
0330 interrupt-controller;
0331 cell-index = <20>;
0332 dcr-reg = <0x338 0x8>;
0333 interrupt-parent = <&UIC1_0>;
0334 interrupts = <29 0x4 13 0x84>;
0335 };
0336
0337 UIC2_14: uic2_14 {
0338 #address-cells = <0>;
0339 #size-cells = <0>;
0340 #interrupt-cells = <2>;
0341
0342 compatible = "ibm,uic";
0343 interrupt-controller;
0344 cell-index = <21>;
0345 dcr-reg = <0x340 0x8>;
0346 interrupt-parent = <&UIC1_0>;
0347 interrupts = <30 0x4 14 0x84>;
0348 };
0349
0350 UIC2_15: uic2_15 {
0351 #address-cells = <0>;
0352 #size-cells = <0>;
0353 #interrupt-cells = <2>;
0354
0355 compatible = "ibm,uic";
0356 interrupt-controller;
0357 cell-index = <22>;
0358 dcr-reg = <0x348 0x8>;
0359 interrupt-parent = <&UIC1_0>;
0360 interrupts = <31 0x4 15 0x84>;
0361 };
0362
0363 plb6 {
0364 compatible = "ibm,plb6";
0365 #address-cells = <2>;
0366 #size-cells = <1>;
0367 ranges;
0368
0369 MCW0: memory-controller-wrapper {
0370 compatible = "ibm,cw-476fsp2";
0371 dcr-reg = <0x11111800 0x40>;
0372 };
0373
0374 MCIF0: memory-controller {
0375 compatible = "ibm,sdram-476fsp2", "ibm,sdram-4xx-ddr3";
0376 dcr-reg = <0x11120000 0x10000>;
0377 mcer-device = <&MCW0>;
0378 interrupt-parent = <&UIC0>;
0379 interrupts = <10 0x84 /* ECC UE */
0380 11 0x84>; /* ECC CE */
0381 };
0382 };
0383
0384 plb4 {
0385 compatible = "ibm,plb4";
0386 #address-cells = <1>;
0387 #size-cells = <1>;
0388 ranges = <0x00000000 0x00000010 0x00000000 0x80000000
0389 0x80000000 0x00000010 0x80000000 0x80000000>;
0390 clock-frequency = <333333334>;
0391
0392 plb6-system-hung-irq {
0393 compatible = "ibm,bus-error-irq";
0394 #interrupt-cells = <2>;
0395 interrupt-parent = <&UIC0>;
0396 interrupts = <0 0x84>;
0397 };
0398
0399 l2-error-irq {
0400 compatible = "ibm,bus-error-irq";
0401 #interrupt-cells = <2>;
0402 interrupt-parent = <&UIC0>;
0403 interrupts = <20 0x84>;
0404 };
0405
0406 plb6-plb4-irq {
0407 compatible = "ibm,bus-error-irq";
0408 #interrupt-cells = <2>;
0409 interrupt-parent = <&UIC0>;
0410 interrupts = <1 0x84>;
0411 };
0412
0413 plb4-ahb-irq {
0414 compatible = "ibm,bus-error-irq";
0415 #interrupt-cells = <2>;
0416 interrupt-parent = <&UIC1_3>;
0417 interrupts = <20 0x84>;
0418 };
0419
0420 opbd-error-irq {
0421 compatible = "ibm,opbd-error-irq";
0422 #interrupt-cells = <2>;
0423 interrupt-parent = <&UIC1_4>;
0424 interrupts = <5 0x84>;
0425 };
0426
0427 cmu-error-irq {
0428 compatible = "ibm,cmu-error-irq";
0429 #interrupt-cells = <2>;
0430 interrupt-parent = <&UIC0>;
0431 interrupts = <28 0x84>;
0432 };
0433
0434 conf-error-irq {
0435 compatible = "ibm,conf-error-irq";
0436 #interrupt-cells = <2>;
0437 interrupt-parent = <&UIC1_4>;
0438 interrupts = <11 0x84>;
0439 };
0440
0441 mc-ue-irq {
0442 compatible = "ibm,mc-ue-irq";
0443 #interrupt-cells = <2>;
0444 interrupt-parent = <&UIC0>;
0445 interrupts = <10 0x84>;
0446 };
0447
0448 reset-warning-irq {
0449 compatible = "ibm,reset-warning-irq";
0450 #interrupt-cells = <2>;
0451 interrupt-parent = <&UIC0>;
0452 interrupts = <17 0x84>;
0453 };
0454
0455 MAL0: mcmal0 {
0456 #interrupt-cells = <1>;
0457 #address-cells = <0>;
0458 #size-cells = <0>;
0459 compatible = "ibm,mcmal";
0460 dcr-reg = <0x80 0x80>;
0461 num-tx-chans = <1>;
0462 num-rx-chans = <1>;
0463 interrupt-parent = <&MAL0>;
0464 interrupts = <0 1 2 3 4>;
0465 /* index interrupt-parent interrupt# type */
0466 interrupt-map = </*TXEOB*/ 0 &UIC1_2 4 0x4
0467 /*RXEOB*/ 1 &UIC1_2 3 0x4
0468 /*SERR*/ 2 &UIC1_2 7 0x4
0469 /*TXDE*/ 3 &UIC1_2 6 0x4
0470 /*RXDE*/ 4 &UIC1_2 5 0x4>;
0471 };
0472
0473 MAL1: mcmal1 {
0474 #interrupt-cells = <1>;
0475 #address-cells = <0>;
0476 #size-cells = <0>;
0477 compatible = "ibm,mcmal";
0478 dcr-reg = <0x100 0x80>;
0479 num-tx-chans = <1>;
0480 num-rx-chans = <1>;
0481 interrupt-parent = <&MAL1>;
0482 interrupts = <0 1 2 3 4>;
0483 /* index interrupt-parent interrupt# type */
0484 interrupt-map = </*TXEOB*/ 0 &UIC1_2 12 0x4
0485 /*RXEOB*/ 1 &UIC1_2 11 0x4
0486 /*SERR*/ 2 &UIC1_2 15 0x4
0487 /*TXDE*/ 3 &UIC1_2 14 0x4
0488 /*RXDE*/ 4 &UIC1_2 13 0x4>;
0489 };
0490
0491 mmc0: mmc@20c0000 {
0492 compatible = "st,sdhci-stih407", "st,sdhci";
0493 reg = <0x020c0000 0x20000>;
0494 reg-names = "mmc";
0495 interrupts = <21 0x4>;
0496 interrupt-parent = <&UIC1_3>;
0497 interrupt-names = "mmcirq";
0498 pinctrl-names = "default";
0499 pinctrl-0 = <>;
0500 clock-names = "mmc";
0501 clocks = <&mmc_clk>;
0502 bus-width = <4>;
0503 non-removable;
0504 sd-uhs-sdr50;
0505 sd-uhs-sdr104;
0506 sd-uhs-ddr50;
0507 };
0508
0509 opb {
0510 compatible = "ibm,opb";
0511 #address-cells = <1>;
0512 #size-cells = <1>;
0513 ranges; // pass-thru to parent bus
0514 clock-frequency = <83333334>;
0515
0516 EMAC0: ethernet@b0000000 {
0517 linux,network-index = <0>;
0518 device_type = "network";
0519 compatible = "ibm,emac4sync";
0520 has-inverted-stacr-oc;
0521 interrupt-parent = <&UIC1_2>;
0522 interrupts = <1 0x4 0 0x4>;
0523 reg = <0xb0000000 0x100>;
0524 local-mac-address = [000000000000]; /* Filled in by
0525 cuboot */
0526 mal-device = <&MAL0>;
0527 mal-tx-channel = <0>;
0528 mal-rx-channel = <0>;
0529 cell-index = <0>;
0530 max-frame-size = <1500>;
0531 rx-fifo-size = <4096>;
0532 tx-fifo-size = <4096>;
0533 rx-fifo-size-gige = <16384>;
0534 tx-fifo-size-gige = <8192>;
0535 phy-address = <1>;
0536 phy-mode = "rgmii";
0537 phy-map = <00000003>;
0538 rgmii-device = <&RGMII>;
0539 rgmii-channel = <0>;
0540 };
0541
0542 EMAC1: ethernet@b0000100 {
0543 linux,network-index = <1>;
0544 device_type = "network";
0545 compatible = "ibm,emac4sync";
0546 has-inverted-stacr-oc;
0547 interrupt-parent = <&UIC1_2>;
0548 interrupts = <9 0x4 8 0x4>;
0549 reg = <0xb0000100 0x100>;
0550 local-mac-address = [000000000000]; /* Filled in by
0551 cuboot */
0552 mal-device = <&MAL1>;
0553 mal-tx-channel = <0>;
0554 mal-rx-channel = <0>;
0555 cell-index = <1>;
0556 max-frame-size = <1500>;
0557 rx-fifo-size = <4096>;
0558 tx-fifo-size = <4096>;
0559 rx-fifo-size-gige = <16384>;
0560 tx-fifo-size-gige = <8192>;
0561 phy-address = <2>;
0562 phy-mode = "rgmii";
0563 phy-map = <00000003>;
0564 rgmii-device = <&RGMII>;
0565 rgmii-channel = <1>;
0566 };
0567
0568 RGMII: rgmii@b0000600 {
0569 compatible = "ibm,rgmii";
0570 has-mdio;
0571 reg = <0xb0000600 0x8>;
0572 };
0573
0574 UART0: serial@b0020000 {
0575 device_type = "serial";
0576 compatible = "ns16550";
0577 reg = <0xb0020000 0x8>;
0578 virtual-reg = <0xb0020000>;
0579 clock-frequency = <20833333>;
0580 current-speed = <115200>;
0581 interrupt-parent = <&UIC0>;
0582 interrupts = <31 0x4>;
0583 };
0584 };
0585
0586 OHCI1: ohci@2040000 {
0587 compatible = "ohci-le";
0588 reg = <0x02040000 0xa0>;
0589 interrupt-parent = <&UIC1_3>;
0590 interrupts = <28 0x8 29 0x8>;
0591 };
0592
0593 OHCI2: ohci@2080000 {
0594 compatible = "ohci-le";
0595 reg = <0x02080000 0xa0>;
0596 interrupt-parent = <&UIC1_3>;
0597 interrupts = <30 0x8 31 0x8>;
0598 };
0599
0600 EHCI: ehci@2000000 {
0601 compatible = "usb-ehci";
0602 reg = <0x02000000 0xa4>;
0603 interrupt-parent = <&UIC1_3>;
0604 interrupts = <23 0x4>;
0605 };
0606
0607 };
0608
0609 chosen {
0610 stdout-path = "/plb/opb/serial@b0020000";
0611 bootargs = "console=ttyS0,115200 rw log_buf_len=32768 debug";
0612 };
0613 };