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
852a2c74b2SAlistair Popple		MAL0: mcmal {
862a2c74b2SAlistair Popple			compatible = "ibm,mcmal-476gtr", "ibm,mcmal2";
872a2c74b2SAlistair Popple			dcr-reg = <0xc0000000 0x062>;
882a2c74b2SAlistair Popple			num-tx-chans = <1>;
892a2c74b2SAlistair Popple			num-rx-chans = <1>;
902a2c74b2SAlistair Popple			#address-cells = <0>;
912a2c74b2SAlistair Popple			#size-cells = <0>;
922a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
932a2c74b2SAlistair Popple			interrupts = <	/*TXEOB*/ 77 0x4
942a2c74b2SAlistair Popple					/*RXEOB*/ 78 0x4
952a2c74b2SAlistair Popple					/*SERR*/  76 0x4
962a2c74b2SAlistair Popple					/*TXDE*/  79 0x4
972a2c74b2SAlistair Popple					/*RXDE*/  80 0x4>;
982a2c74b2SAlistair Popple		};
992a2c74b2SAlistair Popple
1002a2c74b2SAlistair Popple		SATA0: sata@30000010000 {
1012a2c74b2SAlistair Popple			compatible = "ibm,476gtr-ahci";
1022a2c74b2SAlistair Popple			reg = <0x300 0x00010000 0x0 0x10000>;
1032a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
1042a2c74b2SAlistair Popple			interrupts = <93 2>;
1052a2c74b2SAlistair Popple		};
1062a2c74b2SAlistair Popple
1072a2c74b2SAlistair Popple		EHCI0: ehci@30010000000 {
1082a2c74b2SAlistair Popple			compatible = "ibm,476gtr-ehci", "generic-ehci";
1092a2c74b2SAlistair Popple			reg = <0x300 0x10000000 0x0 0x10000>;
1102a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
1112a2c74b2SAlistair Popple			interrupts = <85 2>;
1122a2c74b2SAlistair Popple		};
1132a2c74b2SAlistair Popple
1142a2c74b2SAlistair Popple		SD0: sd@30000000000 {
1152a2c74b2SAlistair Popple			compatible = "ibm,476gtr-sdhci", "generic-sdhci";
1162a2c74b2SAlistair Popple			reg = <0x300 0x00000000 0x0 0x10000>;
1172a2c74b2SAlistair Popple			interrupts = <91 2>;
1182a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
1192a2c74b2SAlistair Popple		};
1202a2c74b2SAlistair Popple
1212a2c74b2SAlistair Popple		OHCI0: ohci@30010010000 {
1222a2c74b2SAlistair Popple			compatible = "ibm,476gtr-ohci", "generic-ohci";
1232a2c74b2SAlistair Popple			reg = <0x300 0x10010000 0x0 0x10000>;
1242a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
1252a2c74b2SAlistair Popple			interrupts = <89 1>;
1262a2c74b2SAlistair Popple			};
1272a2c74b2SAlistair Popple
1282a2c74b2SAlistair Popple		OHCI1: ohci@30010020000 {
1292a2c74b2SAlistair Popple			compatible = "ibm,476gtr-ohci", "generic-ohci";
1302a2c74b2SAlistair Popple			reg = <0x300 0x10020000 0x0 0x10000>;
1312a2c74b2SAlistair Popple			interrupt-parent = <&MPIC>;
1322a2c74b2SAlistair Popple			interrupts = <88 1>;
1332a2c74b2SAlistair Popple			};
1342a2c74b2SAlistair Popple
1352a2c74b2SAlistair Popple		POB0: opb {
1362a2c74b2SAlistair Popple			compatible = "ibm,opb-4xx", "ibm,opb";
1372a2c74b2SAlistair Popple			#address-cells = <1>;
1382a2c74b2SAlistair Popple			#size-cells = <1>;
1392a2c74b2SAlistair Popple			/* Wish there was a nicer way of specifying a full
1402a2c74b2SAlistair Popple			 * 32-bit range
1412a2c74b2SAlistair Popple			 */
1422a2c74b2SAlistair Popple			ranges = <0x00000000 0x0000033f 0x00000000 0x80000000
1432a2c74b2SAlistair Popple				  0x80000000 0x0000033f 0x80000000 0x80000000>;
1442a2c74b2SAlistair Popple			clock-frequency = <100000000>;
1452a2c74b2SAlistair Popple
1462a2c74b2SAlistair Popple			RGMII0: emac-rgmii-wol@50004 {
1472a2c74b2SAlistair Popple				compatible = "ibm,rgmii-wol-476gtr", "ibm,rgmii-wol";
1482a2c74b2SAlistair Popple				reg = <0x50004 0x00000008>;
1492a2c74b2SAlistair Popple				has-mdio;
1502a2c74b2SAlistair Popple			};
1512a2c74b2SAlistair Popple
1522a2c74b2SAlistair Popple			EMAC0: ethernet@30000 {
1532a2c74b2SAlistair Popple				device_type = "network";
1542a2c74b2SAlistair Popple				compatible = "ibm,emac-476gtr", "ibm,emac4sync";
1552a2c74b2SAlistair Popple				interrupt-parent = <&EMAC0>;
1562a2c74b2SAlistair Popple				interrupts = <0x0 0x1>;
1572a2c74b2SAlistair Popple				#interrupt-cells = <1>;
1582a2c74b2SAlistair Popple				#address-cells = <0>;
1592a2c74b2SAlistair Popple				#size-cells = <0>;
1602a2c74b2SAlistair Popple				interrupt-map = </*Status*/ 0x0 &MPIC 81 0x4
1612a2c74b2SAlistair Popple						 /*Wake*/   0x1 &MPIC 82 0x4>;
1622a2c74b2SAlistair Popple				reg = <0x30000 0x78>;
1632a2c74b2SAlistair Popple
1642a2c74b2SAlistair Popple				/* local-mac-address will normally be added by
1652a2c74b2SAlistair Popple				 * the wrapper. If your device doesn't support
1662a2c74b2SAlistair Popple				 * passing data to the wrapper (in the form
1672a2c74b2SAlistair Popple				 * local-mac-addr=<hwaddr>) then you will need
1682a2c74b2SAlistair Popple				 * to set it manually here. */
1692a2c74b2SAlistair Popple				//local-mac-address = [000000000000];
1702a2c74b2SAlistair Popple
1712a2c74b2SAlistair Popple				mal-device = <&MAL0>;
1722a2c74b2SAlistair Popple				mal-tx-channel = <0>;
1732a2c74b2SAlistair Popple				mal-rx-channel = <0>;
1742a2c74b2SAlistair Popple				cell-index = <0>;
1752a2c74b2SAlistair Popple				max-frame-size = <9000>;
1762a2c74b2SAlistair Popple				rx-fifo-size = <4096>;
1772a2c74b2SAlistair Popple				tx-fifo-size = <2048>;
1782a2c74b2SAlistair Popple				rx-fifo-size-gige = <16384>;
1792a2c74b2SAlistair Popple				phy-mode = "rgmii";
1802a2c74b2SAlistair Popple				phy-map = <0x00000000>;
1812a2c74b2SAlistair Popple				rgmii-wol-device = <&RGMII0>;
1822a2c74b2SAlistair Popple				has-inverted-stacr-oc;
1832a2c74b2SAlistair Popple				has-new-stacr-staopc;
1842a2c74b2SAlistair Popple			};
1852a2c74b2SAlistair Popple
1862a2c74b2SAlistair Popple			UART0: serial@10000 {
1872a2c74b2SAlistair Popple				device_type = "serial";
1882a2c74b2SAlistair Popple				compatible = "ns16750", "ns16550";
1892a2c74b2SAlistair Popple				reg = <0x10000 0x00000008>;
1902a2c74b2SAlistair Popple				virtual-reg = <0xe8010000>;
1912a2c74b2SAlistair Popple				clock-frequency = <1851851>;
1922a2c74b2SAlistair Popple				current-speed = <38400>;
1932a2c74b2SAlistair Popple				interrupt-parent = <&MPIC>;
1942a2c74b2SAlistair Popple				interrupts = <39 2>;
1952a2c74b2SAlistair Popple			};
1962a2c74b2SAlistair Popple
1972a2c74b2SAlistair Popple			IIC0: i2c@00000000 {
1982a2c74b2SAlistair Popple				compatible = "ibm,iic-476gtr", "ibm,iic";
1992a2c74b2SAlistair Popple				reg = <0x0 0x00000020>;
2002a2c74b2SAlistair Popple				interrupt-parent = <&MPIC>;
2012a2c74b2SAlistair Popple				interrupts = <37 2>;
2022a2c74b2SAlistair Popple				#address-cells = <1>;
2032a2c74b2SAlistair Popple				#size-cells = <0>;
2042a2c74b2SAlistair Popple				rtc@68 {
2052a2c74b2SAlistair Popple					compatible = "stm,m41t80", "m41st85";
2062a2c74b2SAlistair Popple					reg = <0x68>;
2072a2c74b2SAlistair Popple				};
2082a2c74b2SAlistair Popple			};
2092a2c74b2SAlistair Popple
2102a2c74b2SAlistair Popple			IIC1: i2c@00000100 {
2112a2c74b2SAlistair Popple				compatible = "ibm,iic-476gtr", "ibm,iic";
2122a2c74b2SAlistair Popple				reg = <0x100 0x00000020>;
2132a2c74b2SAlistair Popple				interrupt-parent = <&MPIC>;
2142a2c74b2SAlistair Popple				interrupts = <38 2>;
2152a2c74b2SAlistair Popple				#address-cells = <1>;
2162a2c74b2SAlistair Popple				#size-cells = <0>;
2172a2c74b2SAlistair Popple				avr@58 {
2182a2c74b2SAlistair Popple					compatible = "ibm,akebono-avr";
2192a2c74b2SAlistair Popple					reg = <0x58>;
2202a2c74b2SAlistair Popple				};
2212a2c74b2SAlistair Popple			};
2222a2c74b2SAlistair Popple
2232a2c74b2SAlistair Popple			FPGA0: fpga@ebc00000 {
2242a2c74b2SAlistair Popple				compatible = "ibm,akebono-fpga";
2252a2c74b2SAlistair Popple				reg = <0xebc00000 0x8>;
2262a2c74b2SAlistair Popple			};
2272a2c74b2SAlistair Popple		};
2282a2c74b2SAlistair Popple
2292a2c74b2SAlistair Popple		PCIE0: pciex@10100000000 {
2302a2c74b2SAlistair Popple			device_type = "pci";
2312a2c74b2SAlistair Popple			#interrupt-cells = <1>;
2322a2c74b2SAlistair Popple			#size-cells = <2>;
2332a2c74b2SAlistair Popple			#address-cells = <3>;
2342a2c74b2SAlistair Popple			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
2352a2c74b2SAlistair Popple			primary;
2362a2c74b2SAlistair Popple			port = <0x0>; /* port number */
2372a2c74b2SAlistair Popple			reg = <0x00000101 0x00000000 0x0 0x10000000	       /* Config space access */
2382a2c74b2SAlistair Popple			       0x00000100 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */
2392a2c74b2SAlistair Popple			dcr-reg = <0xc0 0x20>;
2402a2c74b2SAlistair Popple
2412a2c74b2SAlistair Popple//                                pci_space  < pci_addr          > < cpu_addr          > < size       >
2422a2c74b2SAlistair Popple			ranges = <0x02000000 0x00000000 0x80000000 0x00000110 0x80000000 0x0 0x80000000
2432a2c74b2SAlistair Popple			          0x01000000 0x0        0x0        0x00000140 0x0        0x0 0x00010000>;
2442a2c74b2SAlistair Popple
2452a2c74b2SAlistair Popple			/* Inbound starting at 0 to memsize filled in by zImage */
2462a2c74b2SAlistair Popple			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
2472a2c74b2SAlistair Popple
2482a2c74b2SAlistair Popple			/* This drives busses 0 to 0xf */
2492a2c74b2SAlistair Popple			bus-range = <0x0 0xf>;
2502a2c74b2SAlistair Popple
2512a2c74b2SAlistair Popple			/* Legacy interrupts (note the weird polarity, the bridge seems
2522a2c74b2SAlistair Popple			 * to invert PCIe legacy interrupts).
2532a2c74b2SAlistair Popple			 * We are de-swizzling here because the numbers are actually for
2542a2c74b2SAlistair Popple			 * port of the root complex virtual P2P bridge. But I want
2552a2c74b2SAlistair Popple			 * to avoid putting a node for it in the tree, so the numbers
2562a2c74b2SAlistair Popple			 * below are basically de-swizzled numbers.
2572a2c74b2SAlistair Popple			 * The real slot is on idsel 0, so the swizzling is 1:1
2582a2c74b2SAlistair Popple			 */
2592a2c74b2SAlistair Popple			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
2602a2c74b2SAlistair Popple			interrupt-map = <
2612a2c74b2SAlistair Popple				0x0 0x0 0x0 0x1 &MPIC 45 0x2 /* int A */
2622a2c74b2SAlistair Popple				0x0 0x0 0x0 0x2 &MPIC 46 0x2 /* int B */
2632a2c74b2SAlistair Popple				0x0 0x0 0x0 0x3 &MPIC 47 0x2 /* int C */
2642a2c74b2SAlistair Popple				0x0 0x0 0x0 0x4 &MPIC 48 0x2 /* int D */>;
2652a2c74b2SAlistair Popple		};
2662a2c74b2SAlistair Popple
2672a2c74b2SAlistair Popple		PCIE1: pciex@20100000000 {
2682a2c74b2SAlistair Popple			device_type = "pci";
2692a2c74b2SAlistair Popple			#interrupt-cells = <1>;
2702a2c74b2SAlistair Popple			#size-cells = <2>;
2712a2c74b2SAlistair Popple			#address-cells = <3>;
2722a2c74b2SAlistair Popple			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
2732a2c74b2SAlistair Popple			primary;
2742a2c74b2SAlistair Popple			port = <0x1>; /* port number */
2752a2c74b2SAlistair Popple			reg = <0x00000201 0x00000000 0x0 0x10000000	       /* Config space access */
2762a2c74b2SAlistair Popple			       0x00000200 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */
2772a2c74b2SAlistair Popple			dcr-reg = <0x100 0x20>;
2782a2c74b2SAlistair Popple
2792a2c74b2SAlistair Popple//                                pci_space  < pci_addr          > < cpu_addr          > < size       >
2802a2c74b2SAlistair Popple			ranges = <0x02000000 0x00000000 0x80000000 0x00000210 0x80000000 0x0 0x80000000
2812a2c74b2SAlistair Popple			          0x01000000 0x0        0x0        0x00000240 0x0        0x0 0x00010000>;
2822a2c74b2SAlistair Popple
2832a2c74b2SAlistair Popple			/* Inbound starting at 0 to memsize filled in by zImage */
2842a2c74b2SAlistair Popple			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
2852a2c74b2SAlistair Popple
2862a2c74b2SAlistair Popple			/* This drives busses 0 to 0xf */
2872a2c74b2SAlistair Popple			bus-range = <0x0 0xf>;
2882a2c74b2SAlistair Popple
2892a2c74b2SAlistair Popple			/* Legacy interrupts (note the weird polarity, the bridge seems
2902a2c74b2SAlistair Popple			 * to invert PCIe legacy interrupts).
2912a2c74b2SAlistair Popple			 * We are de-swizzling here because the numbers are actually for
2922a2c74b2SAlistair Popple			 * port of the root complex virtual P2P bridge. But I want
2932a2c74b2SAlistair Popple			 * to avoid putting a node for it in the tree, so the numbers
2942a2c74b2SAlistair Popple			 * below are basically de-swizzled numbers.
2952a2c74b2SAlistair Popple			 * The real slot is on idsel 0, so the swizzling is 1:1
2962a2c74b2SAlistair Popple			 */
2972a2c74b2SAlistair Popple			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
2982a2c74b2SAlistair Popple			interrupt-map = <
2992a2c74b2SAlistair Popple				0x0 0x0 0x0 0x1 &MPIC 53 0x2 /* int A */
3002a2c74b2SAlistair Popple				0x0 0x0 0x0 0x2 &MPIC 54 0x2 /* int B */
3012a2c74b2SAlistair Popple				0x0 0x0 0x0 0x3 &MPIC 55 0x2 /* int C */
3022a2c74b2SAlistair Popple				0x0 0x0 0x0 0x4 &MPIC 56 0x2 /* int D */>;
3032a2c74b2SAlistair Popple		};
3042a2c74b2SAlistair Popple
3052a2c74b2SAlistair Popple		PCIE2: pciex@18100000000 {
3062a2c74b2SAlistair Popple			device_type = "pci";
3072a2c74b2SAlistair Popple			#interrupt-cells = <1>;
3082a2c74b2SAlistair Popple			#size-cells = <2>;
3092a2c74b2SAlistair Popple			#address-cells = <3>;
3102a2c74b2SAlistair Popple			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
3112a2c74b2SAlistair Popple			primary;
3122a2c74b2SAlistair Popple			port = <0x2>; /* port number */
3132a2c74b2SAlistair Popple			reg = <0x00000181 0x00000000 0x0 0x10000000	       /* Config space access */
3142a2c74b2SAlistair Popple			       0x00000180 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */
3152a2c74b2SAlistair Popple			dcr-reg = <0xe0 0x20>;
3162a2c74b2SAlistair Popple
3172a2c74b2SAlistair Popple//                                pci_space  < pci_addr          > < cpu_addr          > < size       >
3182a2c74b2SAlistair Popple			ranges = <0x02000000 0x00000000 0x80000000 0x00000190 0x80000000 0x0 0x80000000
3192a2c74b2SAlistair Popple			          0x01000000 0x0        0x0        0x000001c0 0x0        0x0 0x00010000>;
3202a2c74b2SAlistair Popple
3212a2c74b2SAlistair Popple			/* Inbound starting at 0 to memsize filled in by zImage */
3222a2c74b2SAlistair Popple			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
3232a2c74b2SAlistair Popple
3242a2c74b2SAlistair Popple			/* This drives busses 0 to 0xf */
3252a2c74b2SAlistair Popple			bus-range = <0x0 0xf>;
3262a2c74b2SAlistair Popple
3272a2c74b2SAlistair Popple			/* Legacy interrupts (note the weird polarity, the bridge seems
3282a2c74b2SAlistair Popple			 * to invert PCIe legacy interrupts).
3292a2c74b2SAlistair Popple			 * We are de-swizzling here because the numbers are actually for
3302a2c74b2SAlistair Popple			 * port of the root complex virtual P2P bridge. But I want
3312a2c74b2SAlistair Popple			 * to avoid putting a node for it in the tree, so the numbers
3322a2c74b2SAlistair Popple			 * below are basically de-swizzled numbers.
3332a2c74b2SAlistair Popple			 * The real slot is on idsel 0, so the swizzling is 1:1
3342a2c74b2SAlistair Popple			 */
3352a2c74b2SAlistair Popple			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
3362a2c74b2SAlistair Popple			interrupt-map = <
3372a2c74b2SAlistair Popple				0x0 0x0 0x0 0x1 &MPIC 61 0x2 /* int A */
3382a2c74b2SAlistair Popple				0x0 0x0 0x0 0x2 &MPIC 62 0x2 /* int B */
3392a2c74b2SAlistair Popple				0x0 0x0 0x0 0x3 &MPIC 63 0x2 /* int C */
3402a2c74b2SAlistair Popple				0x0 0x0 0x0 0x4 &MPIC 64 0x2 /* int D */>;
3412a2c74b2SAlistair Popple		};
3422a2c74b2SAlistair Popple
3432a2c74b2SAlistair Popple		PCIE3: pciex@28100000000 {
3442a2c74b2SAlistair Popple			device_type = "pci";
3452a2c74b2SAlistair Popple			#interrupt-cells = <1>;
3462a2c74b2SAlistair Popple			#size-cells = <2>;
3472a2c74b2SAlistair Popple			#address-cells = <3>;
3482a2c74b2SAlistair Popple			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
3492a2c74b2SAlistair Popple			primary;
3502a2c74b2SAlistair Popple			port = <0x3>; /* port number */
3512a2c74b2SAlistair Popple			reg = <0x00000281 0x00000000 0x0 0x10000000	       /* Config space access */
3522a2c74b2SAlistair Popple			       0x00000280 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */
3532a2c74b2SAlistair Popple			dcr-reg = <0x120 0x20>;
3542a2c74b2SAlistair Popple
3552a2c74b2SAlistair Popple//                                pci_space  < pci_addr          > < cpu_addr          > < size       >
3562a2c74b2SAlistair Popple			ranges = <0x02000000 0x00000000 0x80000000 0x00000290 0x80000000 0x0 0x80000000
3572a2c74b2SAlistair Popple			          0x01000000 0x0        0x0        0x000002c0 0x0        0x0 0x00010000>;
3582a2c74b2SAlistair Popple
3592a2c74b2SAlistair Popple			/* Inbound starting at 0 to memsize filled in by zImage */
3602a2c74b2SAlistair Popple			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
3612a2c74b2SAlistair Popple
3622a2c74b2SAlistair Popple			/* This drives busses 0 to 0xf */
3632a2c74b2SAlistair Popple			bus-range = <0x0 0xf>;
3642a2c74b2SAlistair Popple
3652a2c74b2SAlistair Popple			/* Legacy interrupts (note the weird polarity, the bridge seems
3662a2c74b2SAlistair Popple			 * to invert PCIe legacy interrupts).
3672a2c74b2SAlistair Popple			 * We are de-swizzling here because the numbers are actually for
3682a2c74b2SAlistair Popple			 * port of the root complex virtual P2P bridge. But I want
3692a2c74b2SAlistair Popple			 * to avoid putting a node for it in the tree, so the numbers
3702a2c74b2SAlistair Popple			 * below are basically de-swizzled numbers.
3712a2c74b2SAlistair Popple			 * The real slot is on idsel 0, so the swizzling is 1:1
3722a2c74b2SAlistair Popple			 */
3732a2c74b2SAlistair Popple			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
3742a2c74b2SAlistair Popple			interrupt-map = <
3752a2c74b2SAlistair Popple				0x0 0x0 0x0 0x1 &MPIC 69 0x2 /* int A */
3762a2c74b2SAlistair Popple				0x0 0x0 0x0 0x2 &MPIC 70 0x2 /* int B */
3772a2c74b2SAlistair Popple				0x0 0x0 0x0 0x3 &MPIC 71 0x2 /* int C */
3782a2c74b2SAlistair Popple				0x0 0x0 0x0 0x4 &MPIC 72 0x2 /* int D */>;
3792a2c74b2SAlistair Popple		};
3802a2c74b2SAlistair Popple	};
3812a2c74b2SAlistair Popple
3822a2c74b2SAlistair Popple	chosen {
3832a2c74b2SAlistair Popple		linux,stdout-path = &UART0;
3842a2c74b2SAlistair Popple	};
3852a2c74b2SAlistair Popple};
386