1*2a2c74b2SAlistair Popple/* 2*2a2c74b2SAlistair Popple * Device Tree Source for IBM Embedded PPC 476 Platform 3*2a2c74b2SAlistair Popple * 4*2a2c74b2SAlistair Popple * Copyright © 2013 Tony Breeds IBM Corporation 5*2a2c74b2SAlistair Popple * Copyright © 2013 Alistair Popple IBM Corporation 6*2a2c74b2SAlistair Popple * 7*2a2c74b2SAlistair Popple * This file is licensed under the terms of the GNU General Public 8*2a2c74b2SAlistair Popple * License version 2. This program is licensed "as is" without 9*2a2c74b2SAlistair Popple * any warranty of any kind, whether express or implied. 10*2a2c74b2SAlistair Popple */ 11*2a2c74b2SAlistair Popple 12*2a2c74b2SAlistair Popple/dts-v1/; 13*2a2c74b2SAlistair Popple 14*2a2c74b2SAlistair Popple/memreserve/ 0x01f00000 0x00100000; // spin table 15*2a2c74b2SAlistair Popple 16*2a2c74b2SAlistair Popple/ { 17*2a2c74b2SAlistair Popple #address-cells = <2>; 18*2a2c74b2SAlistair Popple #size-cells = <2>; 19*2a2c74b2SAlistair Popple model = "ibm,akebono"; 20*2a2c74b2SAlistair Popple compatible = "ibm,akebono", "ibm,476gtr"; 21*2a2c74b2SAlistair Popple dcr-parent = <&{/cpus/cpu@0}>; 22*2a2c74b2SAlistair Popple 23*2a2c74b2SAlistair Popple aliases { 24*2a2c74b2SAlistair Popple serial0 = &UART0; 25*2a2c74b2SAlistair Popple }; 26*2a2c74b2SAlistair Popple 27*2a2c74b2SAlistair Popple cpus { 28*2a2c74b2SAlistair Popple #address-cells = <1>; 29*2a2c74b2SAlistair Popple #size-cells = <0>; 30*2a2c74b2SAlistair Popple 31*2a2c74b2SAlistair Popple cpu@0 { 32*2a2c74b2SAlistair Popple device_type = "cpu"; 33*2a2c74b2SAlistair Popple model = "PowerPC,476"; 34*2a2c74b2SAlistair Popple reg = <0>; 35*2a2c74b2SAlistair Popple clock-frequency = <1600000000>; // 1.6 GHz 36*2a2c74b2SAlistair Popple timebase-frequency = <100000000>; // 100Mhz 37*2a2c74b2SAlistair Popple i-cache-line-size = <32>; 38*2a2c74b2SAlistair Popple d-cache-line-size = <32>; 39*2a2c74b2SAlistair Popple i-cache-size = <32768>; 40*2a2c74b2SAlistair Popple d-cache-size = <32768>; 41*2a2c74b2SAlistair Popple dcr-controller; 42*2a2c74b2SAlistair Popple dcr-access-method = "native"; 43*2a2c74b2SAlistair Popple status = "ok"; 44*2a2c74b2SAlistair Popple }; 45*2a2c74b2SAlistair Popple cpu@1 { 46*2a2c74b2SAlistair Popple device_type = "cpu"; 47*2a2c74b2SAlistair Popple model = "PowerPC,476"; 48*2a2c74b2SAlistair Popple reg = <1>; 49*2a2c74b2SAlistair Popple clock-frequency = <1600000000>; // 1.6 GHz 50*2a2c74b2SAlistair Popple timebase-frequency = <100000000>; // 100Mhz 51*2a2c74b2SAlistair Popple i-cache-line-size = <32>; 52*2a2c74b2SAlistair Popple d-cache-line-size = <32>; 53*2a2c74b2SAlistair Popple i-cache-size = <32768>; 54*2a2c74b2SAlistair Popple d-cache-size = <32768>; 55*2a2c74b2SAlistair Popple dcr-controller; 56*2a2c74b2SAlistair Popple dcr-access-method = "native"; 57*2a2c74b2SAlistair Popple status = "disabled"; 58*2a2c74b2SAlistair Popple enable-method = "spin-table"; 59*2a2c74b2SAlistair Popple cpu-release-addr = <0x0 0x01f00000>; 60*2a2c74b2SAlistair Popple }; 61*2a2c74b2SAlistair Popple }; 62*2a2c74b2SAlistair Popple 63*2a2c74b2SAlistair Popple memory { 64*2a2c74b2SAlistair Popple device_type = "memory"; 65*2a2c74b2SAlistair Popple reg = <0x0 0x0 0x0 0x0>; // filled in by zImage 66*2a2c74b2SAlistair Popple }; 67*2a2c74b2SAlistair Popple 68*2a2c74b2SAlistair Popple MPIC: interrupt-controller { 69*2a2c74b2SAlistair Popple compatible = "chrp,open-pic"; 70*2a2c74b2SAlistair Popple interrupt-controller; 71*2a2c74b2SAlistair Popple dcr-reg = <0xffc00000 0x00040000>; 72*2a2c74b2SAlistair Popple #address-cells = <0>; 73*2a2c74b2SAlistair Popple #size-cells = <0>; 74*2a2c74b2SAlistair Popple #interrupt-cells = <2>; 75*2a2c74b2SAlistair Popple single-cpu-affinity; 76*2a2c74b2SAlistair Popple }; 77*2a2c74b2SAlistair Popple 78*2a2c74b2SAlistair Popple plb { 79*2a2c74b2SAlistair Popple compatible = "ibm,plb6"; 80*2a2c74b2SAlistair Popple #address-cells = <2>; 81*2a2c74b2SAlistair Popple #size-cells = <2>; 82*2a2c74b2SAlistair Popple ranges; 83*2a2c74b2SAlistair Popple clock-frequency = <200000000>; // 200Mhz 84*2a2c74b2SAlistair Popple 85*2a2c74b2SAlistair Popple MAL0: mcmal { 86*2a2c74b2SAlistair Popple compatible = "ibm,mcmal-476gtr", "ibm,mcmal2"; 87*2a2c74b2SAlistair Popple dcr-reg = <0xc0000000 0x062>; 88*2a2c74b2SAlistair Popple num-tx-chans = <1>; 89*2a2c74b2SAlistair Popple num-rx-chans = <1>; 90*2a2c74b2SAlistair Popple #address-cells = <0>; 91*2a2c74b2SAlistair Popple #size-cells = <0>; 92*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 93*2a2c74b2SAlistair Popple interrupts = < /*TXEOB*/ 77 0x4 94*2a2c74b2SAlistair Popple /*RXEOB*/ 78 0x4 95*2a2c74b2SAlistair Popple /*SERR*/ 76 0x4 96*2a2c74b2SAlistair Popple /*TXDE*/ 79 0x4 97*2a2c74b2SAlistair Popple /*RXDE*/ 80 0x4>; 98*2a2c74b2SAlistair Popple }; 99*2a2c74b2SAlistair Popple 100*2a2c74b2SAlistair Popple SATA0: sata@30000010000 { 101*2a2c74b2SAlistair Popple compatible = "ibm,476gtr-ahci"; 102*2a2c74b2SAlistair Popple reg = <0x300 0x00010000 0x0 0x10000>; 103*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 104*2a2c74b2SAlistair Popple interrupts = <93 2>; 105*2a2c74b2SAlistair Popple }; 106*2a2c74b2SAlistair Popple 107*2a2c74b2SAlistair Popple EHCI0: ehci@30010000000 { 108*2a2c74b2SAlistair Popple compatible = "ibm,476gtr-ehci", "generic-ehci"; 109*2a2c74b2SAlistair Popple reg = <0x300 0x10000000 0x0 0x10000>; 110*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 111*2a2c74b2SAlistair Popple interrupts = <85 2>; 112*2a2c74b2SAlistair Popple }; 113*2a2c74b2SAlistair Popple 114*2a2c74b2SAlistair Popple SD0: sd@30000000000 { 115*2a2c74b2SAlistair Popple compatible = "ibm,476gtr-sdhci", "generic-sdhci"; 116*2a2c74b2SAlistair Popple reg = <0x300 0x00000000 0x0 0x10000>; 117*2a2c74b2SAlistair Popple interrupts = <91 2>; 118*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 119*2a2c74b2SAlistair Popple }; 120*2a2c74b2SAlistair Popple 121*2a2c74b2SAlistair Popple OHCI0: ohci@30010010000 { 122*2a2c74b2SAlistair Popple compatible = "ibm,476gtr-ohci", "generic-ohci"; 123*2a2c74b2SAlistair Popple reg = <0x300 0x10010000 0x0 0x10000>; 124*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 125*2a2c74b2SAlistair Popple interrupts = <89 1>; 126*2a2c74b2SAlistair Popple }; 127*2a2c74b2SAlistair Popple 128*2a2c74b2SAlistair Popple OHCI1: ohci@30010020000 { 129*2a2c74b2SAlistair Popple compatible = "ibm,476gtr-ohci", "generic-ohci"; 130*2a2c74b2SAlistair Popple reg = <0x300 0x10020000 0x0 0x10000>; 131*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 132*2a2c74b2SAlistair Popple interrupts = <88 1>; 133*2a2c74b2SAlistair Popple }; 134*2a2c74b2SAlistair Popple 135*2a2c74b2SAlistair Popple POB0: opb { 136*2a2c74b2SAlistair Popple compatible = "ibm,opb-4xx", "ibm,opb"; 137*2a2c74b2SAlistair Popple #address-cells = <1>; 138*2a2c74b2SAlistair Popple #size-cells = <1>; 139*2a2c74b2SAlistair Popple /* Wish there was a nicer way of specifying a full 140*2a2c74b2SAlistair Popple * 32-bit range 141*2a2c74b2SAlistair Popple */ 142*2a2c74b2SAlistair Popple ranges = <0x00000000 0x0000033f 0x00000000 0x80000000 143*2a2c74b2SAlistair Popple 0x80000000 0x0000033f 0x80000000 0x80000000>; 144*2a2c74b2SAlistair Popple clock-frequency = <100000000>; 145*2a2c74b2SAlistair Popple 146*2a2c74b2SAlistair Popple RGMII0: emac-rgmii-wol@50004 { 147*2a2c74b2SAlistair Popple compatible = "ibm,rgmii-wol-476gtr", "ibm,rgmii-wol"; 148*2a2c74b2SAlistair Popple reg = <0x50004 0x00000008>; 149*2a2c74b2SAlistair Popple has-mdio; 150*2a2c74b2SAlistair Popple }; 151*2a2c74b2SAlistair Popple 152*2a2c74b2SAlistair Popple EMAC0: ethernet@30000 { 153*2a2c74b2SAlistair Popple device_type = "network"; 154*2a2c74b2SAlistair Popple compatible = "ibm,emac-476gtr", "ibm,emac4sync"; 155*2a2c74b2SAlistair Popple interrupt-parent = <&EMAC0>; 156*2a2c74b2SAlistair Popple interrupts = <0x0 0x1>; 157*2a2c74b2SAlistair Popple #interrupt-cells = <1>; 158*2a2c74b2SAlistair Popple #address-cells = <0>; 159*2a2c74b2SAlistair Popple #size-cells = <0>; 160*2a2c74b2SAlistair Popple interrupt-map = </*Status*/ 0x0 &MPIC 81 0x4 161*2a2c74b2SAlistair Popple /*Wake*/ 0x1 &MPIC 82 0x4>; 162*2a2c74b2SAlistair Popple reg = <0x30000 0x78>; 163*2a2c74b2SAlistair Popple 164*2a2c74b2SAlistair Popple /* local-mac-address will normally be added by 165*2a2c74b2SAlistair Popple * the wrapper. If your device doesn't support 166*2a2c74b2SAlistair Popple * passing data to the wrapper (in the form 167*2a2c74b2SAlistair Popple * local-mac-addr=<hwaddr>) then you will need 168*2a2c74b2SAlistair Popple * to set it manually here. */ 169*2a2c74b2SAlistair Popple //local-mac-address = [000000000000]; 170*2a2c74b2SAlistair Popple 171*2a2c74b2SAlistair Popple mal-device = <&MAL0>; 172*2a2c74b2SAlistair Popple mal-tx-channel = <0>; 173*2a2c74b2SAlistair Popple mal-rx-channel = <0>; 174*2a2c74b2SAlistair Popple cell-index = <0>; 175*2a2c74b2SAlistair Popple max-frame-size = <9000>; 176*2a2c74b2SAlistair Popple rx-fifo-size = <4096>; 177*2a2c74b2SAlistair Popple tx-fifo-size = <2048>; 178*2a2c74b2SAlistair Popple rx-fifo-size-gige = <16384>; 179*2a2c74b2SAlistair Popple phy-mode = "rgmii"; 180*2a2c74b2SAlistair Popple phy-map = <0x00000000>; 181*2a2c74b2SAlistair Popple rgmii-wol-device = <&RGMII0>; 182*2a2c74b2SAlistair Popple has-inverted-stacr-oc; 183*2a2c74b2SAlistair Popple has-new-stacr-staopc; 184*2a2c74b2SAlistair Popple }; 185*2a2c74b2SAlistair Popple 186*2a2c74b2SAlistair Popple UART0: serial@10000 { 187*2a2c74b2SAlistair Popple device_type = "serial"; 188*2a2c74b2SAlistair Popple compatible = "ns16750", "ns16550"; 189*2a2c74b2SAlistair Popple reg = <0x10000 0x00000008>; 190*2a2c74b2SAlistair Popple virtual-reg = <0xe8010000>; 191*2a2c74b2SAlistair Popple clock-frequency = <1851851>; 192*2a2c74b2SAlistair Popple current-speed = <38400>; 193*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 194*2a2c74b2SAlistair Popple interrupts = <39 2>; 195*2a2c74b2SAlistair Popple }; 196*2a2c74b2SAlistair Popple 197*2a2c74b2SAlistair Popple IIC0: i2c@00000000 { 198*2a2c74b2SAlistair Popple compatible = "ibm,iic-476gtr", "ibm,iic"; 199*2a2c74b2SAlistair Popple reg = <0x0 0x00000020>; 200*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 201*2a2c74b2SAlistair Popple interrupts = <37 2>; 202*2a2c74b2SAlistair Popple #address-cells = <1>; 203*2a2c74b2SAlistair Popple #size-cells = <0>; 204*2a2c74b2SAlistair Popple rtc@68 { 205*2a2c74b2SAlistair Popple compatible = "stm,m41t80", "m41st85"; 206*2a2c74b2SAlistair Popple reg = <0x68>; 207*2a2c74b2SAlistair Popple }; 208*2a2c74b2SAlistair Popple }; 209*2a2c74b2SAlistair Popple 210*2a2c74b2SAlistair Popple IIC1: i2c@00000100 { 211*2a2c74b2SAlistair Popple compatible = "ibm,iic-476gtr", "ibm,iic"; 212*2a2c74b2SAlistair Popple reg = <0x100 0x00000020>; 213*2a2c74b2SAlistair Popple interrupt-parent = <&MPIC>; 214*2a2c74b2SAlistair Popple interrupts = <38 2>; 215*2a2c74b2SAlistair Popple #address-cells = <1>; 216*2a2c74b2SAlistair Popple #size-cells = <0>; 217*2a2c74b2SAlistair Popple avr@58 { 218*2a2c74b2SAlistair Popple compatible = "ibm,akebono-avr"; 219*2a2c74b2SAlistair Popple reg = <0x58>; 220*2a2c74b2SAlistair Popple }; 221*2a2c74b2SAlistair Popple }; 222*2a2c74b2SAlistair Popple 223*2a2c74b2SAlistair Popple FPGA0: fpga@ebc00000 { 224*2a2c74b2SAlistair Popple compatible = "ibm,akebono-fpga"; 225*2a2c74b2SAlistair Popple reg = <0xebc00000 0x8>; 226*2a2c74b2SAlistair Popple }; 227*2a2c74b2SAlistair Popple }; 228*2a2c74b2SAlistair Popple 229*2a2c74b2SAlistair Popple PCIE0: pciex@10100000000 { 230*2a2c74b2SAlistair Popple device_type = "pci"; 231*2a2c74b2SAlistair Popple #interrupt-cells = <1>; 232*2a2c74b2SAlistair Popple #size-cells = <2>; 233*2a2c74b2SAlistair Popple #address-cells = <3>; 234*2a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 235*2a2c74b2SAlistair Popple primary; 236*2a2c74b2SAlistair Popple port = <0x0>; /* port number */ 237*2a2c74b2SAlistair Popple reg = <0x00000101 0x00000000 0x0 0x10000000 /* Config space access */ 238*2a2c74b2SAlistair Popple 0x00000100 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 239*2a2c74b2SAlistair Popple dcr-reg = <0xc0 0x20>; 240*2a2c74b2SAlistair Popple 241*2a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 242*2a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000110 0x80000000 0x0 0x80000000 243*2a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x00000140 0x0 0x0 0x00010000>; 244*2a2c74b2SAlistair Popple 245*2a2c74b2SAlistair Popple /* Inbound starting at 0 to memsize filled in by zImage */ 246*2a2c74b2SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>; 247*2a2c74b2SAlistair Popple 248*2a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 249*2a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 250*2a2c74b2SAlistair Popple 251*2a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 252*2a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 253*2a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 254*2a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 255*2a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 256*2a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 257*2a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 258*2a2c74b2SAlistair Popple */ 259*2a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 260*2a2c74b2SAlistair Popple interrupt-map = < 261*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 45 0x2 /* int A */ 262*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 46 0x2 /* int B */ 263*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 47 0x2 /* int C */ 264*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 48 0x2 /* int D */>; 265*2a2c74b2SAlistair Popple }; 266*2a2c74b2SAlistair Popple 267*2a2c74b2SAlistair Popple PCIE1: pciex@20100000000 { 268*2a2c74b2SAlistair Popple device_type = "pci"; 269*2a2c74b2SAlistair Popple #interrupt-cells = <1>; 270*2a2c74b2SAlistair Popple #size-cells = <2>; 271*2a2c74b2SAlistair Popple #address-cells = <3>; 272*2a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 273*2a2c74b2SAlistair Popple primary; 274*2a2c74b2SAlistair Popple port = <0x1>; /* port number */ 275*2a2c74b2SAlistair Popple reg = <0x00000201 0x00000000 0x0 0x10000000 /* Config space access */ 276*2a2c74b2SAlistair Popple 0x00000200 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 277*2a2c74b2SAlistair Popple dcr-reg = <0x100 0x20>; 278*2a2c74b2SAlistair Popple 279*2a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 280*2a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000210 0x80000000 0x0 0x80000000 281*2a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x00000240 0x0 0x0 0x00010000>; 282*2a2c74b2SAlistair Popple 283*2a2c74b2SAlistair Popple /* Inbound starting at 0 to memsize filled in by zImage */ 284*2a2c74b2SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>; 285*2a2c74b2SAlistair Popple 286*2a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 287*2a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 288*2a2c74b2SAlistair Popple 289*2a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 290*2a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 291*2a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 292*2a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 293*2a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 294*2a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 295*2a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 296*2a2c74b2SAlistair Popple */ 297*2a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 298*2a2c74b2SAlistair Popple interrupt-map = < 299*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 53 0x2 /* int A */ 300*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 54 0x2 /* int B */ 301*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 55 0x2 /* int C */ 302*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 56 0x2 /* int D */>; 303*2a2c74b2SAlistair Popple }; 304*2a2c74b2SAlistair Popple 305*2a2c74b2SAlistair Popple PCIE2: pciex@18100000000 { 306*2a2c74b2SAlistair Popple device_type = "pci"; 307*2a2c74b2SAlistair Popple #interrupt-cells = <1>; 308*2a2c74b2SAlistair Popple #size-cells = <2>; 309*2a2c74b2SAlistair Popple #address-cells = <3>; 310*2a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 311*2a2c74b2SAlistair Popple primary; 312*2a2c74b2SAlistair Popple port = <0x2>; /* port number */ 313*2a2c74b2SAlistair Popple reg = <0x00000181 0x00000000 0x0 0x10000000 /* Config space access */ 314*2a2c74b2SAlistair Popple 0x00000180 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 315*2a2c74b2SAlistair Popple dcr-reg = <0xe0 0x20>; 316*2a2c74b2SAlistair Popple 317*2a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 318*2a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000190 0x80000000 0x0 0x80000000 319*2a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x000001c0 0x0 0x0 0x00010000>; 320*2a2c74b2SAlistair Popple 321*2a2c74b2SAlistair Popple /* Inbound starting at 0 to memsize filled in by zImage */ 322*2a2c74b2SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>; 323*2a2c74b2SAlistair Popple 324*2a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 325*2a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 326*2a2c74b2SAlistair Popple 327*2a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 328*2a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 329*2a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 330*2a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 331*2a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 332*2a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 333*2a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 334*2a2c74b2SAlistair Popple */ 335*2a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 336*2a2c74b2SAlistair Popple interrupt-map = < 337*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 61 0x2 /* int A */ 338*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 62 0x2 /* int B */ 339*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 63 0x2 /* int C */ 340*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 64 0x2 /* int D */>; 341*2a2c74b2SAlistair Popple }; 342*2a2c74b2SAlistair Popple 343*2a2c74b2SAlistair Popple PCIE3: pciex@28100000000 { 344*2a2c74b2SAlistair Popple device_type = "pci"; 345*2a2c74b2SAlistair Popple #interrupt-cells = <1>; 346*2a2c74b2SAlistair Popple #size-cells = <2>; 347*2a2c74b2SAlistair Popple #address-cells = <3>; 348*2a2c74b2SAlistair Popple compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; 349*2a2c74b2SAlistair Popple primary; 350*2a2c74b2SAlistair Popple port = <0x3>; /* port number */ 351*2a2c74b2SAlistair Popple reg = <0x00000281 0x00000000 0x0 0x10000000 /* Config space access */ 352*2a2c74b2SAlistair Popple 0x00000280 0x00000000 0x0 0x00001000>; /* UTL Registers space access */ 353*2a2c74b2SAlistair Popple dcr-reg = <0x120 0x20>; 354*2a2c74b2SAlistair Popple 355*2a2c74b2SAlistair Popple// pci_space < pci_addr > < cpu_addr > < size > 356*2a2c74b2SAlistair Popple ranges = <0x02000000 0x00000000 0x80000000 0x00000290 0x80000000 0x0 0x80000000 357*2a2c74b2SAlistair Popple 0x01000000 0x0 0x0 0x000002c0 0x0 0x0 0x00010000>; 358*2a2c74b2SAlistair Popple 359*2a2c74b2SAlistair Popple /* Inbound starting at 0 to memsize filled in by zImage */ 360*2a2c74b2SAlistair Popple dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>; 361*2a2c74b2SAlistair Popple 362*2a2c74b2SAlistair Popple /* This drives busses 0 to 0xf */ 363*2a2c74b2SAlistair Popple bus-range = <0x0 0xf>; 364*2a2c74b2SAlistair Popple 365*2a2c74b2SAlistair Popple /* Legacy interrupts (note the weird polarity, the bridge seems 366*2a2c74b2SAlistair Popple * to invert PCIe legacy interrupts). 367*2a2c74b2SAlistair Popple * We are de-swizzling here because the numbers are actually for 368*2a2c74b2SAlistair Popple * port of the root complex virtual P2P bridge. But I want 369*2a2c74b2SAlistair Popple * to avoid putting a node for it in the tree, so the numbers 370*2a2c74b2SAlistair Popple * below are basically de-swizzled numbers. 371*2a2c74b2SAlistair Popple * The real slot is on idsel 0, so the swizzling is 1:1 372*2a2c74b2SAlistair Popple */ 373*2a2c74b2SAlistair Popple interrupt-map-mask = <0x0 0x0 0x0 0x7>; 374*2a2c74b2SAlistair Popple interrupt-map = < 375*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x1 &MPIC 69 0x2 /* int A */ 376*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x2 &MPIC 70 0x2 /* int B */ 377*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x3 &MPIC 71 0x2 /* int C */ 378*2a2c74b2SAlistair Popple 0x0 0x0 0x0 0x4 &MPIC 72 0x2 /* int D */>; 379*2a2c74b2SAlistair Popple }; 380*2a2c74b2SAlistair Popple }; 381*2a2c74b2SAlistair Popple 382*2a2c74b2SAlistair Popple chosen { 383*2a2c74b2SAlistair Popple linux,stdout-path = &UART0; 384*2a2c74b2SAlistair Popple }; 385*2a2c74b2SAlistair Popple}; 386