12a2c74b2SAlistair Popple/* 22a2c74b2SAlistair Popple * Device Tree Source for IBM Embedded PPC 476 Platform 32a2c74b2SAlistair Popple * 42a2c74b2SAlistair Popple * Copyright © 2013 Tony Breeds IBM Corporation 52a2c74b2SAlistair Popple * Copyright © 2013 Alistair Popple IBM Corporation 62a2c74b2SAlistair Popple * 72a2c74b2SAlistair Popple * This file is licensed under the terms of the GNU General Public 82a2c74b2SAlistair Popple * License version 2. This program is licensed "as is" without 92a2c74b2SAlistair Popple * any warranty of any kind, whether express or implied. 102a2c74b2SAlistair Popple */ 112a2c74b2SAlistair Popple 122a2c74b2SAlistair Popple/dts-v1/; 132a2c74b2SAlistair Popple 142a2c74b2SAlistair Popple/memreserve/ 0x01f00000 0x00100000; // spin table 152a2c74b2SAlistair Popple 162a2c74b2SAlistair Popple/ { 172a2c74b2SAlistair Popple #address-cells = <2>; 182a2c74b2SAlistair Popple #size-cells = <2>; 192a2c74b2SAlistair Popple model = "ibm,akebono"; 202a2c74b2SAlistair Popple compatible = "ibm,akebono", "ibm,476gtr"; 212a2c74b2SAlistair Popple dcr-parent = <&{/cpus/cpu@0}>; 222a2c74b2SAlistair Popple 232a2c74b2SAlistair Popple aliases { 242a2c74b2SAlistair Popple serial0 = &UART0; 252a2c74b2SAlistair Popple }; 262a2c74b2SAlistair Popple 272a2c74b2SAlistair Popple cpus { 282a2c74b2SAlistair Popple #address-cells = <1>; 292a2c74b2SAlistair Popple #size-cells = <0>; 302a2c74b2SAlistair Popple 312a2c74b2SAlistair Popple cpu@0 { 322a2c74b2SAlistair Popple device_type = "cpu"; 332a2c74b2SAlistair Popple model = "PowerPC,476"; 342a2c74b2SAlistair Popple reg = <0>; 352a2c74b2SAlistair Popple clock-frequency = <1600000000>; // 1.6 GHz 362a2c74b2SAlistair Popple timebase-frequency = <100000000>; // 100Mhz 372a2c74b2SAlistair Popple i-cache-line-size = <32>; 382a2c74b2SAlistair Popple d-cache-line-size = <32>; 392a2c74b2SAlistair Popple i-cache-size = <32768>; 402a2c74b2SAlistair Popple d-cache-size = <32768>; 412a2c74b2SAlistair Popple dcr-controller; 422a2c74b2SAlistair Popple dcr-access-method = "native"; 432a2c74b2SAlistair Popple status = "ok"; 442a2c74b2SAlistair Popple }; 452a2c74b2SAlistair Popple cpu@1 { 462a2c74b2SAlistair Popple device_type = "cpu"; 472a2c74b2SAlistair Popple model = "PowerPC,476"; 482a2c74b2SAlistair Popple reg = <1>; 492a2c74b2SAlistair Popple clock-frequency = <1600000000>; // 1.6 GHz 502a2c74b2SAlistair Popple timebase-frequency = <100000000>; // 100Mhz 512a2c74b2SAlistair Popple i-cache-line-size = <32>; 522a2c74b2SAlistair Popple d-cache-line-size = <32>; 532a2c74b2SAlistair Popple i-cache-size = <32768>; 542a2c74b2SAlistair Popple d-cache-size = <32768>; 552a2c74b2SAlistair Popple dcr-controller; 562a2c74b2SAlistair Popple dcr-access-method = "native"; 572a2c74b2SAlistair Popple status = "disabled"; 582a2c74b2SAlistair Popple enable-method = "spin-table"; 592a2c74b2SAlistair Popple cpu-release-addr = <0x0 0x01f00000>; 602a2c74b2SAlistair Popple }; 612a2c74b2SAlistair Popple }; 622a2c74b2SAlistair Popple 632a2c74b2SAlistair Popple memory { 642a2c74b2SAlistair Popple device_type = "memory"; 652a2c74b2SAlistair Popple reg = <0x0 0x0 0x0 0x0>; // filled in by zImage 662a2c74b2SAlistair Popple }; 672a2c74b2SAlistair Popple 682a2c74b2SAlistair Popple MPIC: interrupt-controller { 692a2c74b2SAlistair Popple compatible = "chrp,open-pic"; 702a2c74b2SAlistair Popple interrupt-controller; 712a2c74b2SAlistair Popple dcr-reg = <0xffc00000 0x00040000>; 722a2c74b2SAlistair Popple #address-cells = <0>; 732a2c74b2SAlistair Popple #size-cells = <0>; 742a2c74b2SAlistair Popple #interrupt-cells = <2>; 752a2c74b2SAlistair Popple single-cpu-affinity; 762a2c74b2SAlistair Popple }; 772a2c74b2SAlistair Popple 782a2c74b2SAlistair Popple plb { 792a2c74b2SAlistair Popple compatible = "ibm,plb6"; 802a2c74b2SAlistair Popple #address-cells = <2>; 812a2c74b2SAlistair Popple #size-cells = <2>; 822a2c74b2SAlistair Popple ranges; 832a2c74b2SAlistair Popple clock-frequency = <200000000>; // 200Mhz 842a2c74b2SAlistair Popple 85e2c37d90SAlistair Popple HSTA0: hsta@310000e0000 { 86e2c37d90SAlistair Popple compatible = "ibm,476gtr-hsta-msi", "ibm,hsta-msi"; 87e2c37d90SAlistair Popple reg = <0x310 0x000e0000 0x0 0xf0>; 88e2c37d90SAlistair Popple interrupt-parent = <&MPIC>; 89e2c37d90SAlistair Popple interrupts = <108 0 90e2c37d90SAlistair Popple 109 0 91e2c37d90SAlistair Popple 110 0 92e2c37d90SAlistair Popple 111 0 93e2c37d90SAlistair Popple 112 0 94e2c37d90SAlistair Popple 113 0 95e2c37d90SAlistair Popple 114 0 96e2c37d90SAlistair Popple 115 0 97e2c37d90SAlistair Popple 116 0 98e2c37d90SAlistair Popple 117 0 99e2c37d90SAlistair Popple 118 0 100e2c37d90SAlistair Popple 119 0 101e2c37d90SAlistair Popple 120 0 102e2c37d90SAlistair Popple 121 0 103e2c37d90SAlistair Popple 122 0 104e2c37d90SAlistair Popple 123 0>; 105e2c37d90SAlistair Popple }; 106e2c37d90SAlistair Popple 1072a2c74b2SAlistair Popple MAL0: mcmal { 1082a2c74b2SAlistair Popple compatible = "ibm,mcmal-476gtr", "ibm,mcmal2"; 1092a2c74b2SAlistair Popple dcr-reg = <0xc0000000 0x062>; 1102a2c74b2SAlistair Popple num-tx-chans = <1>; 1112a2c74b2SAlistair Popple num-rx-chans = <1>; 1122a2c74b2SAlistair Popple #address-cells = <0>; 1132a2c74b2SAlistair Popple #size-cells = <0>; 1142a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1152a2c74b2SAlistair Popple interrupts = < /*TXEOB*/ 77 0x4 1162a2c74b2SAlistair Popple /*RXEOB*/ 78 0x4 1172a2c74b2SAlistair Popple /*SERR*/ 76 0x4 1182a2c74b2SAlistair Popple /*TXDE*/ 79 0x4 1192a2c74b2SAlistair Popple /*RXDE*/ 80 0x4>; 1202a2c74b2SAlistair Popple }; 1212a2c74b2SAlistair Popple 1222a2c74b2SAlistair Popple SATA0: sata@30000010000 { 1232a2c74b2SAlistair Popple compatible = "ibm,476gtr-ahci"; 1242a2c74b2SAlistair Popple reg = <0x300 0x00010000 0x0 0x10000>; 1252a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1262a2c74b2SAlistair Popple interrupts = <93 2>; 1272a2c74b2SAlistair Popple }; 1282a2c74b2SAlistair Popple 1292a2c74b2SAlistair Popple EHCI0: ehci@30010000000 { 1302a2c74b2SAlistair Popple compatible = "ibm,476gtr-ehci", "generic-ehci"; 1312a2c74b2SAlistair Popple reg = <0x300 0x10000000 0x0 0x10000>; 1322a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1332a2c74b2SAlistair Popple interrupts = <85 2>; 1342a2c74b2SAlistair Popple }; 1352a2c74b2SAlistair Popple 1362a2c74b2SAlistair Popple SD0: sd@30000000000 { 1372a2c74b2SAlistair Popple compatible = "ibm,476gtr-sdhci", "generic-sdhci"; 1382a2c74b2SAlistair Popple reg = <0x300 0x00000000 0x0 0x10000>; 1392a2c74b2SAlistair Popple interrupts = <91 2>; 1402a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1412a2c74b2SAlistair Popple }; 1422a2c74b2SAlistair Popple 1432a2c74b2SAlistair Popple OHCI0: ohci@30010010000 { 1442a2c74b2SAlistair Popple compatible = "ibm,476gtr-ohci", "generic-ohci"; 1452a2c74b2SAlistair Popple reg = <0x300 0x10010000 0x0 0x10000>; 1462a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1472a2c74b2SAlistair Popple interrupts = <89 1>; 1482a2c74b2SAlistair Popple }; 1492a2c74b2SAlistair Popple 1502a2c74b2SAlistair Popple OHCI1: ohci@30010020000 { 1512a2c74b2SAlistair Popple compatible = "ibm,476gtr-ohci", "generic-ohci"; 1522a2c74b2SAlistair Popple reg = <0x300 0x10020000 0x0 0x10000>; 1532a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 1542a2c74b2SAlistair Popple interrupts = <88 1>; 1552a2c74b2SAlistair Popple }; 1562a2c74b2SAlistair Popple 1572a2c74b2SAlistair Popple POB0: opb { 1582a2c74b2SAlistair Popple compatible = "ibm,opb-4xx", "ibm,opb"; 1592a2c74b2SAlistair Popple #address-cells = <1>; 1602a2c74b2SAlistair Popple #size-cells = <1>; 1612a2c74b2SAlistair Popple /* Wish there was a nicer way of specifying a full 1622a2c74b2SAlistair Popple * 32-bit range 1632a2c74b2SAlistair Popple */ 1642a2c74b2SAlistair Popple ranges = <0x00000000 0x0000033f 0x00000000 0x80000000 1652a2c74b2SAlistair Popple 0x80000000 0x0000033f 0x80000000 0x80000000>; 1662a2c74b2SAlistair Popple clock-frequency = <100000000>; 1672a2c74b2SAlistair Popple 1682a2c74b2SAlistair Popple RGMII0: emac-rgmii-wol@50004 { 1692a2c74b2SAlistair Popple compatible = "ibm,rgmii-wol-476gtr", "ibm,rgmii-wol"; 1702a2c74b2SAlistair Popple reg = <0x50004 0x00000008>; 1712a2c74b2SAlistair Popple has-mdio; 1722a2c74b2SAlistair Popple }; 1732a2c74b2SAlistair Popple 1742a2c74b2SAlistair Popple EMAC0: ethernet@30000 { 1752a2c74b2SAlistair Popple device_type = "network"; 1762a2c74b2SAlistair Popple compatible = "ibm,emac-476gtr", "ibm,emac4sync"; 1772a2c74b2SAlistair Popple interrupt-parent = <&EMAC0>; 1782a2c74b2SAlistair Popple interrupts = <0x0 0x1>; 1792a2c74b2SAlistair Popple #interrupt-cells = <1>; 1802a2c74b2SAlistair Popple #address-cells = <0>; 1812a2c74b2SAlistair Popple #size-cells = <0>; 1822a2c74b2SAlistair Popple interrupt-map = </*Status*/ 0x0 &MPIC 81 0x4 1832a2c74b2SAlistair Popple /*Wake*/ 0x1 &MPIC 82 0x4>; 1842a2c74b2SAlistair Popple reg = <0x30000 0x78>; 1852a2c74b2SAlistair Popple 1862a2c74b2SAlistair Popple /* local-mac-address will normally be added by 1872a2c74b2SAlistair Popple * the wrapper. If your device doesn't support 1882a2c74b2SAlistair Popple * passing data to the wrapper (in the form 1892a2c74b2SAlistair Popple * local-mac-addr=<hwaddr>) then you will need 1902a2c74b2SAlistair Popple * to set it manually here. */ 1912a2c74b2SAlistair Popple //local-mac-address = [000000000000]; 1922a2c74b2SAlistair Popple 1932a2c74b2SAlistair Popple mal-device = <&MAL0>; 1942a2c74b2SAlistair Popple mal-tx-channel = <0>; 1952a2c74b2SAlistair Popple mal-rx-channel = <0>; 1962a2c74b2SAlistair Popple cell-index = <0>; 1972a2c74b2SAlistair Popple max-frame-size = <9000>; 1982a2c74b2SAlistair Popple rx-fifo-size = <4096>; 1992a2c74b2SAlistair Popple tx-fifo-size = <2048>; 2002a2c74b2SAlistair Popple rx-fifo-size-gige = <16384>; 2012a2c74b2SAlistair Popple phy-mode = "rgmii"; 2022a2c74b2SAlistair Popple phy-map = <0x00000000>; 2032a2c74b2SAlistair Popple rgmii-wol-device = <&RGMII0>; 2042a2c74b2SAlistair Popple has-inverted-stacr-oc; 2052a2c74b2SAlistair Popple has-new-stacr-staopc; 2062a2c74b2SAlistair Popple }; 2072a2c74b2SAlistair Popple 2082a2c74b2SAlistair Popple UART0: serial@10000 { 2092a2c74b2SAlistair Popple device_type = "serial"; 2102a2c74b2SAlistair Popple compatible = "ns16750", "ns16550"; 2112a2c74b2SAlistair Popple reg = <0x10000 0x00000008>; 2122a2c74b2SAlistair Popple virtual-reg = <0xe8010000>; 2132a2c74b2SAlistair Popple clock-frequency = <1851851>; 2142a2c74b2SAlistair Popple current-speed = <38400>; 2152a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 2162a2c74b2SAlistair Popple interrupts = <39 2>; 2172a2c74b2SAlistair Popple }; 2182a2c74b2SAlistair Popple 2192a2c74b2SAlistair Popple IIC0: i2c@00000000 { 2202a2c74b2SAlistair Popple compatible = "ibm,iic-476gtr", "ibm,iic"; 2212a2c74b2SAlistair Popple reg = <0x0 0x00000020>; 2222a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 2232a2c74b2SAlistair Popple interrupts = <37 2>; 2242a2c74b2SAlistair Popple #address-cells = <1>; 2252a2c74b2SAlistair Popple #size-cells = <0>; 2262a2c74b2SAlistair Popple rtc@68 { 2275edc2aaeSStefan Agner compatible = "st,m41t80", "m41st85"; 2282a2c74b2SAlistair Popple reg = <0x68>; 2292a2c74b2SAlistair Popple }; 2302a2c74b2SAlistair Popple }; 2312a2c74b2SAlistair Popple 2322a2c74b2SAlistair Popple IIC1: i2c@00000100 { 2332a2c74b2SAlistair Popple compatible = "ibm,iic-476gtr", "ibm,iic"; 2342a2c74b2SAlistair Popple reg = <0x100 0x00000020>; 2352a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 2362a2c74b2SAlistair Popple interrupts = <38 2>; 2372a2c74b2SAlistair Popple #address-cells = <1>; 2382a2c74b2SAlistair Popple #size-cells = <0>; 2392a2c74b2SAlistair Popple avr@58 { 2402a2c74b2SAlistair Popple compatible = "ibm,akebono-avr"; 2412a2c74b2SAlistair Popple reg = <0x58>; 2422a2c74b2SAlistair Popple }; 2432a2c74b2SAlistair Popple }; 2442a2c74b2SAlistair Popple 2452a2c74b2SAlistair Popple FPGA0: fpga@ebc00000 { 2462a2c74b2SAlistair Popple compatible = "ibm,akebono-fpga"; 2472a2c74b2SAlistair Popple reg = <0xebc00000 0x8>; 2482a2c74b2SAlistair Popple }; 2492a2c74b2SAlistair Popple }; 2502a2c74b2SAlistair Popple 2512a2c74b2SAlistair Popple PCIE0: pciex@10100000000 { 2522a2c74b2SAlistair Popple device_type = "pci"; 2532a2c74b2SAlistair Popple #interrupt-cells = <1>; 2542a2c74b2SAlistair Popple #size-cells = <2>; 2552a2c74b2SAlistair Popple #address-cells = <3>; 2562a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 2572a2c74b2SAlistair Popple primary; 2582a2c74b2SAlistair Popple port = <0x0>; /* port number */ 2592a2c74b2SAlistair Popple reg = <0x00000101 0x00000000 0x0 0x10000000 /* Config space access */ 2602a2c74b2SAlistair Popple 0x00000100 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 2612a2c74b2SAlistair Popple dcr-reg = <0xc0 0x20>; 2622a2c74b2SAlistair Popple 2632a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 2642a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000110 0x80000000 0x0 0x80000000 2652a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x00000140 0x0 0x0 0x00010000>; 2662a2c74b2SAlistair Popple 267e2c37d90SAlistair Popple /* Inbound starting at 0x0 to 0x40000000000. In order to use MSI 268e2c37d90SAlistair Popple * PCI devices must be able to write to the HSTA module. 269e2c37d90SAlistair Popple */ 270e2c37d90SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; 2712a2c74b2SAlistair Popple 2722a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 2732a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 2742a2c74b2SAlistair Popple 2752a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 2762a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 2772a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 2782a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 2792a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 2802a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 2812a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 2822a2c74b2SAlistair Popple */ 2832a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 2842a2c74b2SAlistair Popple interrupt-map = < 2852a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 45 0x2 /* int A */ 2862a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 46 0x2 /* int B */ 2872a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 47 0x2 /* int C */ 2882a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 48 0x2 /* int D */>; 2892a2c74b2SAlistair Popple }; 2902a2c74b2SAlistair Popple 2912a2c74b2SAlistair Popple PCIE1: pciex@20100000000 { 2922a2c74b2SAlistair Popple device_type = "pci"; 2932a2c74b2SAlistair Popple #interrupt-cells = <1>; 2942a2c74b2SAlistair Popple #size-cells = <2>; 2952a2c74b2SAlistair Popple #address-cells = <3>; 2962a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 2972a2c74b2SAlistair Popple primary; 2982a2c74b2SAlistair Popple port = <0x1>; /* port number */ 2992a2c74b2SAlistair Popple reg = <0x00000201 0x00000000 0x0 0x10000000 /* Config space access */ 3002a2c74b2SAlistair Popple 0x00000200 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 3012a2c74b2SAlistair Popple dcr-reg = <0x100 0x20>; 3022a2c74b2SAlistair Popple 3032a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 3042a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000210 0x80000000 0x0 0x80000000 3052a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x00000240 0x0 0x0 0x00010000>; 3062a2c74b2SAlistair Popple 307e2c37d90SAlistair Popple /* Inbound starting at 0x0 to 0x40000000000. In order to use MSI 308e2c37d90SAlistair Popple * PCI devices must be able to write to the HSTA module. 309e2c37d90SAlistair Popple */ 310e2c37d90SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; 3112a2c74b2SAlistair Popple 3122a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 3132a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 3142a2c74b2SAlistair Popple 3152a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 3162a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 3172a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 3182a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 3192a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 3202a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 3212a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 3222a2c74b2SAlistair Popple */ 3232a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 3242a2c74b2SAlistair Popple interrupt-map = < 3252a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 53 0x2 /* int A */ 3262a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 54 0x2 /* int B */ 3272a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 55 0x2 /* int C */ 3282a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 56 0x2 /* int D */>; 3292a2c74b2SAlistair Popple }; 3302a2c74b2SAlistair Popple 3312a2c74b2SAlistair Popple PCIE2: pciex@18100000000 { 3322a2c74b2SAlistair Popple device_type = "pci"; 3332a2c74b2SAlistair Popple #interrupt-cells = <1>; 3342a2c74b2SAlistair Popple #size-cells = <2>; 3352a2c74b2SAlistair Popple #address-cells = <3>; 3362a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 3372a2c74b2SAlistair Popple primary; 3382a2c74b2SAlistair Popple port = <0x2>; /* port number */ 3392a2c74b2SAlistair Popple reg = <0x00000181 0x00000000 0x0 0x10000000 /* Config space access */ 3402a2c74b2SAlistair Popple 0x00000180 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 3412a2c74b2SAlistair Popple dcr-reg = <0xe0 0x20>; 3422a2c74b2SAlistair Popple 3432a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 3442a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000190 0x80000000 0x0 0x80000000 3452a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x000001c0 0x0 0x0 0x00010000>; 3462a2c74b2SAlistair Popple 347e2c37d90SAlistair Popple /* Inbound starting at 0x0 to 0x40000000000. In order to use MSI 348e2c37d90SAlistair Popple * PCI devices must be able to write to the HSTA module. 349e2c37d90SAlistair Popple */ 350e2c37d90SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; 3512a2c74b2SAlistair Popple 3522a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 3532a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 3542a2c74b2SAlistair Popple 3552a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 3562a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 3572a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 3582a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 3592a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 3602a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 3612a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 3622a2c74b2SAlistair Popple */ 3632a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 3642a2c74b2SAlistair Popple interrupt-map = < 3652a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 61 0x2 /* int A */ 3662a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 62 0x2 /* int B */ 3672a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 63 0x2 /* int C */ 3682a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 64 0x2 /* int D */>; 3692a2c74b2SAlistair Popple }; 3702a2c74b2SAlistair Popple 3712a2c74b2SAlistair Popple PCIE3: pciex@28100000000 { 3722a2c74b2SAlistair Popple device_type = "pci"; 3732a2c74b2SAlistair Popple #interrupt-cells = <1>; 3742a2c74b2SAlistair Popple #size-cells = <2>; 3752a2c74b2SAlistair Popple #address-cells = <3>; 3762a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 3772a2c74b2SAlistair Popple primary; 3782a2c74b2SAlistair Popple port = <0x3>; /* port number */ 3792a2c74b2SAlistair Popple reg = <0x00000281 0x00000000 0x0 0x10000000 /* Config space access */ 3802a2c74b2SAlistair Popple 0x00000280 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 3812a2c74b2SAlistair Popple dcr-reg = <0x120 0x20>; 3822a2c74b2SAlistair Popple 3832a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 3842a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000290 0x80000000 0x0 0x80000000 3852a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x000002c0 0x0 0x0 0x00010000>; 3862a2c74b2SAlistair Popple 387e2c37d90SAlistair Popple /* Inbound starting at 0x0 to 0x40000000000. In order to use MSI 388e2c37d90SAlistair Popple * PCI devices must be able to write to the HSTA module. 389e2c37d90SAlistair Popple */ 390e2c37d90SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; 3912a2c74b2SAlistair Popple 3922a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 3932a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 3942a2c74b2SAlistair Popple 3952a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 3962a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 3972a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 3982a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 3992a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 4002a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 4012a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 4022a2c74b2SAlistair Popple */ 4032a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 4042a2c74b2SAlistair Popple interrupt-map = < 4052a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 69 0x2 /* int A */ 4062a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 70 0x2 /* int B */ 4072a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 71 0x2 /* int C */ 4082a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 72 0x2 /* int D */>; 4092a2c74b2SAlistair Popple }; 4102a2c74b2SAlistair Popple }; 4112a2c74b2SAlistair Popple 4122a2c74b2SAlistair Popple chosen { 4132a2c74b2SAlistair Popple linux,stdout-path = &UART0; 4142a2c74b2SAlistair Popple }; 4152a2c74b2SAlistair Popple}; 416