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";
435c285dd7SRobert P. J. Day			status = "okay";
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
219600ecc19SMathieu Malaterre			IIC0: i2c@0 {
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
232600ecc19SMathieu Malaterre			IIC1: i2c@100 {
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
25186bc917dSMichael Ellerman		PCIE0: pcie@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
29186bc917dSMichael Ellerman		PCIE1: pcie@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
33186bc917dSMichael Ellerman		PCIE2: pcie@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
37186bc917dSMichael Ellerman		PCIE3: pcie@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 {
41378e5dfeaSRob Herring		stdout-path = &UART0;
4142a2c74b2SAlistair Popple	};
4152a2c74b2SAlistair Popple};
416