13de9c9cdSBenjamin Herrenschmidt/*
23de9c9cdSBenjamin Herrenschmidt * Device Tree Source for AMCC Katmai eval board
33de9c9cdSBenjamin Herrenschmidt *
43de9c9cdSBenjamin Herrenschmidt * Copyright (c) 2006, 2007 IBM Corp.
53de9c9cdSBenjamin Herrenschmidt * Benjamin Herrenschmidt <benh@kernel.crashing.org>
63de9c9cdSBenjamin Herrenschmidt *
73de9c9cdSBenjamin Herrenschmidt * Copyright (c) 2006, 2007 IBM Corp.
83de9c9cdSBenjamin Herrenschmidt * Josh Boyer <jwboyer@linux.vnet.ibm.com>
93de9c9cdSBenjamin Herrenschmidt *
103de9c9cdSBenjamin Herrenschmidt * This file is licensed under the terms of the GNU General Public
113de9c9cdSBenjamin Herrenschmidt * License version 2.  This program is licensed "as is" without
123de9c9cdSBenjamin Herrenschmidt * any warranty of any kind, whether express or implied.
133de9c9cdSBenjamin Herrenschmidt */
143de9c9cdSBenjamin Herrenschmidt
1571f34979SDavid Gibson/dts-v1/;
1671f34979SDavid Gibson
173de9c9cdSBenjamin Herrenschmidt/ {
183de9c9cdSBenjamin Herrenschmidt	#address-cells = <2>;
193de9c9cdSBenjamin Herrenschmidt	#size-cells = <1>;
203de9c9cdSBenjamin Herrenschmidt	model = "amcc,katmai";
213de9c9cdSBenjamin Herrenschmidt	compatible = "amcc,katmai";
2271f34979SDavid Gibson	dcr-parent = <&{/cpus/cpu@0}>;
233de9c9cdSBenjamin Herrenschmidt
248aaed98cSStefan Roese	aliases {
258aaed98cSStefan Roese		ethernet0 = &EMAC0;
268aaed98cSStefan Roese		serial0 = &UART0;
278aaed98cSStefan Roese		serial1 = &UART1;
288aaed98cSStefan Roese		serial2 = &UART2;
298aaed98cSStefan Roese	};
308aaed98cSStefan Roese
313de9c9cdSBenjamin Herrenschmidt	cpus {
323de9c9cdSBenjamin Herrenschmidt		#address-cells = <1>;
333de9c9cdSBenjamin Herrenschmidt		#size-cells = <0>;
343de9c9cdSBenjamin Herrenschmidt
3572fda114SJosh Boyer		cpu@0 {
363de9c9cdSBenjamin Herrenschmidt			device_type = "cpu";
3772fda114SJosh Boyer			model = "PowerPC,440SPe";
3871f34979SDavid Gibson			reg = <0x00000000>;
393de9c9cdSBenjamin Herrenschmidt			clock-frequency = <0>; /* Filled in by zImage */
403de9c9cdSBenjamin Herrenschmidt			timebase-frequency = <0>; /* Filled in by zImage */
4171f34979SDavid Gibson			i-cache-line-size = <32>;
4271f34979SDavid Gibson			d-cache-line-size = <32>;
4371f34979SDavid Gibson			i-cache-size = <32768>;
4471f34979SDavid Gibson			d-cache-size = <32768>;
453de9c9cdSBenjamin Herrenschmidt			dcr-controller;
463de9c9cdSBenjamin Herrenschmidt			dcr-access-method = "native";
473de9c9cdSBenjamin Herrenschmidt		};
483de9c9cdSBenjamin Herrenschmidt	};
493de9c9cdSBenjamin Herrenschmidt
503de9c9cdSBenjamin Herrenschmidt	memory {
513de9c9cdSBenjamin Herrenschmidt		device_type = "memory";
5271f34979SDavid Gibson		reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
533de9c9cdSBenjamin Herrenschmidt	};
543de9c9cdSBenjamin Herrenschmidt
553de9c9cdSBenjamin Herrenschmidt	UIC0: interrupt-controller0 {
563de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,uic-440spe","ibm,uic";
573de9c9cdSBenjamin Herrenschmidt		interrupt-controller;
583de9c9cdSBenjamin Herrenschmidt		cell-index = <0>;
5971f34979SDavid Gibson		dcr-reg = <0x0c0 0x009>;
603de9c9cdSBenjamin Herrenschmidt		#address-cells = <0>;
613de9c9cdSBenjamin Herrenschmidt		#size-cells = <0>;
623de9c9cdSBenjamin Herrenschmidt		#interrupt-cells = <2>;
633de9c9cdSBenjamin Herrenschmidt	};
643de9c9cdSBenjamin Herrenschmidt
653de9c9cdSBenjamin Herrenschmidt	UIC1: interrupt-controller1 {
663de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,uic-440spe","ibm,uic";
673de9c9cdSBenjamin Herrenschmidt		interrupt-controller;
683de9c9cdSBenjamin Herrenschmidt		cell-index = <1>;
6971f34979SDavid Gibson		dcr-reg = <0x0d0 0x009>;
703de9c9cdSBenjamin Herrenschmidt		#address-cells = <0>;
713de9c9cdSBenjamin Herrenschmidt		#size-cells = <0>;
723de9c9cdSBenjamin Herrenschmidt		#interrupt-cells = <2>;
7371f34979SDavid Gibson		interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
743de9c9cdSBenjamin Herrenschmidt		interrupt-parent = <&UIC0>;
753de9c9cdSBenjamin Herrenschmidt	};
763de9c9cdSBenjamin Herrenschmidt
773de9c9cdSBenjamin Herrenschmidt	UIC2: interrupt-controller2 {
783de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,uic-440spe","ibm,uic";
793de9c9cdSBenjamin Herrenschmidt		interrupt-controller;
803de9c9cdSBenjamin Herrenschmidt		cell-index = <2>;
8171f34979SDavid Gibson		dcr-reg = <0x0e0 0x009>;
823de9c9cdSBenjamin Herrenschmidt		#address-cells = <0>;
833de9c9cdSBenjamin Herrenschmidt		#size-cells = <0>;
843de9c9cdSBenjamin Herrenschmidt		#interrupt-cells = <2>;
8571f34979SDavid Gibson		interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
863de9c9cdSBenjamin Herrenschmidt		interrupt-parent = <&UIC0>;
873de9c9cdSBenjamin Herrenschmidt	};
883de9c9cdSBenjamin Herrenschmidt
893de9c9cdSBenjamin Herrenschmidt	UIC3: interrupt-controller3 {
903de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,uic-440spe","ibm,uic";
913de9c9cdSBenjamin Herrenschmidt		interrupt-controller;
923de9c9cdSBenjamin Herrenschmidt		cell-index = <3>;
9371f34979SDavid Gibson		dcr-reg = <0x0f0 0x009>;
943de9c9cdSBenjamin Herrenschmidt		#address-cells = <0>;
953de9c9cdSBenjamin Herrenschmidt		#size-cells = <0>;
963de9c9cdSBenjamin Herrenschmidt		#interrupt-cells = <2>;
9771f34979SDavid Gibson		interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
983de9c9cdSBenjamin Herrenschmidt		interrupt-parent = <&UIC0>;
993de9c9cdSBenjamin Herrenschmidt	};
1003de9c9cdSBenjamin Herrenschmidt
1013de9c9cdSBenjamin Herrenschmidt	SDR0: sdr {
1023de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,sdr-440spe";
10371f34979SDavid Gibson		dcr-reg = <0x00e 0x002>;
1043de9c9cdSBenjamin Herrenschmidt	};
1053de9c9cdSBenjamin Herrenschmidt
1063de9c9cdSBenjamin Herrenschmidt	CPR0: cpr {
1073de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,cpr-440spe";
10871f34979SDavid Gibson		dcr-reg = <0x00c 0x002>;
1093de9c9cdSBenjamin Herrenschmidt	};
1103de9c9cdSBenjamin Herrenschmidt
1113de9c9cdSBenjamin Herrenschmidt	plb {
1123de9c9cdSBenjamin Herrenschmidt		compatible = "ibm,plb-440spe", "ibm,plb-440gp", "ibm,plb4";
1133de9c9cdSBenjamin Herrenschmidt		#address-cells = <2>;
1143de9c9cdSBenjamin Herrenschmidt		#size-cells = <1>;
1153de9c9cdSBenjamin Herrenschmidt		ranges;
1163de9c9cdSBenjamin Herrenschmidt		clock-frequency = <0>; /* Filled in by zImage */
1173de9c9cdSBenjamin Herrenschmidt
1183de9c9cdSBenjamin Herrenschmidt		SDRAM0: sdram {
1193de9c9cdSBenjamin Herrenschmidt			compatible = "ibm,sdram-440spe", "ibm,sdram-405gp";
12071f34979SDavid Gibson			dcr-reg = <0x010 0x002>;
1213de9c9cdSBenjamin Herrenschmidt		};
1223de9c9cdSBenjamin Herrenschmidt
1233de9c9cdSBenjamin Herrenschmidt		MAL0: mcmal {
1243de9c9cdSBenjamin Herrenschmidt			compatible = "ibm,mcmal-440spe", "ibm,mcmal2";
12571f34979SDavid Gibson			dcr-reg = <0x180 0x062>;
1263de9c9cdSBenjamin Herrenschmidt			num-tx-chans = <2>;
1273de9c9cdSBenjamin Herrenschmidt			num-rx-chans = <1>;
1283de9c9cdSBenjamin Herrenschmidt			interrupt-parent = <&MAL0>;
12971f34979SDavid Gibson			interrupts = <0x0 0x1 0x2 0x3 0x4>;
1303de9c9cdSBenjamin Herrenschmidt			#interrupt-cells = <1>;
1313de9c9cdSBenjamin Herrenschmidt			#address-cells = <0>;
1323de9c9cdSBenjamin Herrenschmidt			#size-cells = <0>;
13371f34979SDavid Gibson			interrupt-map = </*TXEOB*/ 0x0 &UIC1 0x6 0x4
13471f34979SDavid Gibson					 /*RXEOB*/ 0x1 &UIC1 0x7 0x4
13571f34979SDavid Gibson					 /*SERR*/  0x2 &UIC1 0x1 0x4
13671f34979SDavid Gibson					 /*TXDE*/  0x3 &UIC1 0x2 0x4
13771f34979SDavid Gibson					 /*RXDE*/  0x4 &UIC1 0x3 0x4>;
1383de9c9cdSBenjamin Herrenschmidt		};
1393de9c9cdSBenjamin Herrenschmidt
1403de9c9cdSBenjamin Herrenschmidt		POB0: opb {
1413de9c9cdSBenjamin Herrenschmidt			compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
1423de9c9cdSBenjamin Herrenschmidt			#address-cells = <1>;
1433de9c9cdSBenjamin Herrenschmidt			#size-cells = <1>;
14471f34979SDavid Gibson			ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
1453de9c9cdSBenjamin Herrenschmidt			clock-frequency = <0>; /* Filled in by zImage */
1463de9c9cdSBenjamin Herrenschmidt
1473de9c9cdSBenjamin Herrenschmidt			EBC0: ebc {
1483de9c9cdSBenjamin Herrenschmidt				compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc";
14971f34979SDavid Gibson				dcr-reg = <0x012 0x002>;
1503de9c9cdSBenjamin Herrenschmidt				#address-cells = <2>;
1513de9c9cdSBenjamin Herrenschmidt				#size-cells = <1>;
1523de9c9cdSBenjamin Herrenschmidt				clock-frequency = <0>; /* Filled in by zImage */
15371f34979SDavid Gibson				interrupts = <0x5 0x1>;
1543de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC1>;
1553de9c9cdSBenjamin Herrenschmidt			};
1563de9c9cdSBenjamin Herrenschmidt
1573de9c9cdSBenjamin Herrenschmidt			UART0: serial@10000200 {
1583de9c9cdSBenjamin Herrenschmidt				device_type = "serial";
1593de9c9cdSBenjamin Herrenschmidt				compatible = "ns16550";
16071f34979SDavid Gibson				reg = <0x10000200 0x00000008>;
16171f34979SDavid Gibson				virtual-reg = <0xa0000200>;
1623de9c9cdSBenjamin Herrenschmidt				clock-frequency = <0>; /* Filled in by zImage */
16371f34979SDavid Gibson				current-speed = <115200>;
1643de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC0>;
16571f34979SDavid Gibson				interrupts = <0x0 0x4>;
1663de9c9cdSBenjamin Herrenschmidt			};
1673de9c9cdSBenjamin Herrenschmidt
1683de9c9cdSBenjamin Herrenschmidt			UART1: serial@10000300 {
1693de9c9cdSBenjamin Herrenschmidt				device_type = "serial";
1703de9c9cdSBenjamin Herrenschmidt				compatible = "ns16550";
17171f34979SDavid Gibson				reg = <0x10000300 0x00000008>;
17271f34979SDavid Gibson				virtual-reg = <0xa0000300>;
1733de9c9cdSBenjamin Herrenschmidt				clock-frequency = <0>;
1743de9c9cdSBenjamin Herrenschmidt				current-speed = <0>;
1753de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC0>;
17671f34979SDavid Gibson				interrupts = <0x1 0x4>;
1773de9c9cdSBenjamin Herrenschmidt			};
1783de9c9cdSBenjamin Herrenschmidt
1793de9c9cdSBenjamin Herrenschmidt
1803de9c9cdSBenjamin Herrenschmidt			UART2: serial@10000600 {
1813de9c9cdSBenjamin Herrenschmidt				device_type = "serial";
1823de9c9cdSBenjamin Herrenschmidt				compatible = "ns16550";
18371f34979SDavid Gibson				reg = <0x10000600 0x00000008>;
18471f34979SDavid Gibson				virtual-reg = <0xa0000600>;
1853de9c9cdSBenjamin Herrenschmidt				clock-frequency = <0>;
1863de9c9cdSBenjamin Herrenschmidt				current-speed = <0>;
1873de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC1>;
18871f34979SDavid Gibson				interrupts = <0x5 0x4>;
1893de9c9cdSBenjamin Herrenschmidt			};
1903de9c9cdSBenjamin Herrenschmidt
1913de9c9cdSBenjamin Herrenschmidt			IIC0: i2c@10000400 {
1923de9c9cdSBenjamin Herrenschmidt				compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
19371f34979SDavid Gibson				reg = <0x10000400 0x00000014>;
1943de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC0>;
19571f34979SDavid Gibson				interrupts = <0x2 0x4>;
1963de9c9cdSBenjamin Herrenschmidt			};
1973de9c9cdSBenjamin Herrenschmidt
1983de9c9cdSBenjamin Herrenschmidt			IIC1: i2c@10000500 {
1993de9c9cdSBenjamin Herrenschmidt				compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
20071f34979SDavid Gibson				reg = <0x10000500 0x00000014>;
2013de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC0>;
20271f34979SDavid Gibson				interrupts = <0x3 0x4>;
2033de9c9cdSBenjamin Herrenschmidt			};
2043de9c9cdSBenjamin Herrenschmidt
2053de9c9cdSBenjamin Herrenschmidt			EMAC0: ethernet@10000800 {
20671f34979SDavid Gibson				linux,network-index = <0x0>;
2073de9c9cdSBenjamin Herrenschmidt				device_type = "network";
2083de9c9cdSBenjamin Herrenschmidt				compatible = "ibm,emac-440spe", "ibm,emac4";
2093de9c9cdSBenjamin Herrenschmidt				interrupt-parent = <&UIC1>;
21071f34979SDavid Gibson				interrupts = <0x1c 0x4 0x1d 0x4>;
21171f34979SDavid Gibson				reg = <0x10000800 0x00000070>;
2123de9c9cdSBenjamin Herrenschmidt				local-mac-address = [000000000000];
2133de9c9cdSBenjamin Herrenschmidt				mal-device = <&MAL0>;
2143de9c9cdSBenjamin Herrenschmidt				mal-tx-channel = <0>;
2153de9c9cdSBenjamin Herrenschmidt				mal-rx-channel = <0>;
2163de9c9cdSBenjamin Herrenschmidt				cell-index = <0>;
21771f34979SDavid Gibson				max-frame-size = <9000>;
21871f34979SDavid Gibson				rx-fifo-size = <4096>;
21971f34979SDavid Gibson				tx-fifo-size = <2048>;
2203de9c9cdSBenjamin Herrenschmidt				phy-mode = "gmii";
22171f34979SDavid Gibson				phy-map = <0x00000000>;
2223de9c9cdSBenjamin Herrenschmidt				has-inverted-stacr-oc;
2233de9c9cdSBenjamin Herrenschmidt				has-new-stacr-staopc;
2243de9c9cdSBenjamin Herrenschmidt			};
2253de9c9cdSBenjamin Herrenschmidt		};
2263de9c9cdSBenjamin Herrenschmidt
2273de9c9cdSBenjamin Herrenschmidt		PCIX0: pci@c0ec00000 {
2283de9c9cdSBenjamin Herrenschmidt			device_type = "pci";
2293de9c9cdSBenjamin Herrenschmidt			#interrupt-cells = <1>;
2303de9c9cdSBenjamin Herrenschmidt			#size-cells = <2>;
2313de9c9cdSBenjamin Herrenschmidt			#address-cells = <3>;
2323de9c9cdSBenjamin Herrenschmidt			compatible = "ibm,plb-pcix-440spe", "ibm,plb-pcix";
2333de9c9cdSBenjamin Herrenschmidt			primary;
2343de9c9cdSBenjamin Herrenschmidt			large-inbound-windows;
2353de9c9cdSBenjamin Herrenschmidt			enable-msi-hole;
23671f34979SDavid Gibson			reg = <0x0000000c 0x0ec00000   0x00000008	/* Config space access */
23771f34979SDavid Gibson			       0x00000000 0x00000000 0x00000000		/* no IACK cycles */
23871f34979SDavid Gibson			       0x0000000c 0x0ed00000   0x00000004   /* Special cycles */
23971f34979SDavid Gibson			       0x0000000c 0x0ec80000 0x00000100	/* Internal registers */
24071f34979SDavid Gibson			       0x0000000c 0x0ec80100  0x000000fc>;	/* Internal messaging registers */
2413de9c9cdSBenjamin Herrenschmidt
2423de9c9cdSBenjamin Herrenschmidt			/* Outbound ranges, one memory and one IO,
2433de9c9cdSBenjamin Herrenschmidt			 * later cannot be changed
2443de9c9cdSBenjamin Herrenschmidt			 */
24571f34979SDavid Gibson			ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000
24671f34979SDavid Gibson				  0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>;
2473de9c9cdSBenjamin Herrenschmidt
2483de9c9cdSBenjamin Herrenschmidt			/* Inbound 2GB range starting at 0 */
24971f34979SDavid Gibson			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
2503de9c9cdSBenjamin Herrenschmidt
2513de9c9cdSBenjamin Herrenschmidt			/* This drives busses 0 to 0xf */
25271f34979SDavid Gibson			bus-range = <0x0 0xf>;
2533de9c9cdSBenjamin Herrenschmidt
2543de9c9cdSBenjamin Herrenschmidt			/*
2553de9c9cdSBenjamin Herrenschmidt			 * On Katmai, the following PCI-X interrupts signals
2563de9c9cdSBenjamin Herrenschmidt			 * have to be enabled via jumpers (only INTA is
2573de9c9cdSBenjamin Herrenschmidt			 * enabled per default):
2583de9c9cdSBenjamin Herrenschmidt			 *
2593de9c9cdSBenjamin Herrenschmidt			 * INTB: J3: 1-2
2603de9c9cdSBenjamin Herrenschmidt			 * INTC: J2: 1-2
2613de9c9cdSBenjamin Herrenschmidt			 * INTD: J1: 1-2
2623de9c9cdSBenjamin Herrenschmidt			 */
26371f34979SDavid Gibson			interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
2643de9c9cdSBenjamin Herrenschmidt			interrupt-map = <
2653de9c9cdSBenjamin Herrenschmidt				/* IDSEL 1 */
26671f34979SDavid Gibson				0x800 0x0 0x0 0x1 &UIC1 0x14 0x8
26771f34979SDavid Gibson				0x800 0x0 0x0 0x2 &UIC1 0x13 0x8
26871f34979SDavid Gibson				0x800 0x0 0x0 0x3 &UIC1 0x12 0x8
26971f34979SDavid Gibson				0x800 0x0 0x0 0x4 &UIC1 0x11 0x8
2703de9c9cdSBenjamin Herrenschmidt			>;
2713de9c9cdSBenjamin Herrenschmidt		};
2723de9c9cdSBenjamin Herrenschmidt
2733de9c9cdSBenjamin Herrenschmidt		PCIE0: pciex@d00000000 {
2743de9c9cdSBenjamin Herrenschmidt			device_type = "pci";
2753de9c9cdSBenjamin Herrenschmidt			#interrupt-cells = <1>;
2763de9c9cdSBenjamin Herrenschmidt			#size-cells = <2>;
2773de9c9cdSBenjamin Herrenschmidt			#address-cells = <3>;
278accf5ef2SStefan Roese			compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
2793de9c9cdSBenjamin Herrenschmidt			primary;
28071f34979SDavid Gibson			port = <0x0>; /* port number */
28171f34979SDavid Gibson			reg = <0x0000000d 0x00000000 0x20000000	/* Config space access */
28271f34979SDavid Gibson			       0x0000000c 0x10000000 0x00001000>;	/* Registers */
28371f34979SDavid Gibson			dcr-reg = <0x100 0x020>;
28471f34979SDavid Gibson			sdr-base = <0x300>;
2853de9c9cdSBenjamin Herrenschmidt
2863de9c9cdSBenjamin Herrenschmidt			/* Outbound ranges, one memory and one IO,
2873de9c9cdSBenjamin Herrenschmidt			 * later cannot be changed
2883de9c9cdSBenjamin Herrenschmidt			 */
28971f34979SDavid Gibson			ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
29071f34979SDavid Gibson				  0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
2913de9c9cdSBenjamin Herrenschmidt
2923de9c9cdSBenjamin Herrenschmidt			/* Inbound 2GB range starting at 0 */
29371f34979SDavid Gibson			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
2943de9c9cdSBenjamin Herrenschmidt
2953de9c9cdSBenjamin Herrenschmidt			/* This drives busses 10 to 0x1f */
29671f34979SDavid Gibson			bus-range = <0x10 0x1f>;
2973de9c9cdSBenjamin Herrenschmidt
2983de9c9cdSBenjamin Herrenschmidt			/* Legacy interrupts (note the weird polarity, the bridge seems
2993de9c9cdSBenjamin Herrenschmidt			 * to invert PCIe legacy interrupts).
3003de9c9cdSBenjamin Herrenschmidt			 * We are de-swizzling here because the numbers are actually for
3013de9c9cdSBenjamin Herrenschmidt			 * port of the root complex virtual P2P bridge. But I want
3023de9c9cdSBenjamin Herrenschmidt			 * to avoid putting a node for it in the tree, so the numbers
3033de9c9cdSBenjamin Herrenschmidt			 * below are basically de-swizzled numbers.
3043de9c9cdSBenjamin Herrenschmidt			 * The real slot is on idsel 0, so the swizzling is 1:1
3053de9c9cdSBenjamin Herrenschmidt			 */
30671f34979SDavid Gibson			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
3073de9c9cdSBenjamin Herrenschmidt			interrupt-map = <
30871f34979SDavid Gibson				0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */
30971f34979SDavid Gibson				0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */
31071f34979SDavid Gibson				0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */
31171f34979SDavid Gibson				0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
3123de9c9cdSBenjamin Herrenschmidt		};
3133de9c9cdSBenjamin Herrenschmidt
3143de9c9cdSBenjamin Herrenschmidt		PCIE1: pciex@d20000000 {
3153de9c9cdSBenjamin Herrenschmidt			device_type = "pci";
3163de9c9cdSBenjamin Herrenschmidt			#interrupt-cells = <1>;
3173de9c9cdSBenjamin Herrenschmidt			#size-cells = <2>;
3183de9c9cdSBenjamin Herrenschmidt			#address-cells = <3>;
319accf5ef2SStefan Roese			compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
3203de9c9cdSBenjamin Herrenschmidt			primary;
32171f34979SDavid Gibson			port = <0x1>; /* port number */
32271f34979SDavid Gibson			reg = <0x0000000d 0x20000000 0x20000000	/* Config space access */
32371f34979SDavid Gibson			       0x0000000c 0x10001000 0x00001000>;	/* Registers */
32471f34979SDavid Gibson			dcr-reg = <0x120 0x020>;
32571f34979SDavid Gibson			sdr-base = <0x340>;
3263de9c9cdSBenjamin Herrenschmidt
3273de9c9cdSBenjamin Herrenschmidt			/* Outbound ranges, one memory and one IO,
3283de9c9cdSBenjamin Herrenschmidt			 * later cannot be changed
3293de9c9cdSBenjamin Herrenschmidt			 */
33071f34979SDavid Gibson			ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
33171f34979SDavid Gibson				  0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
3323de9c9cdSBenjamin Herrenschmidt
3333de9c9cdSBenjamin Herrenschmidt			/* Inbound 2GB range starting at 0 */
33471f34979SDavid Gibson			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
3353de9c9cdSBenjamin Herrenschmidt
3363de9c9cdSBenjamin Herrenschmidt			/* This drives busses 10 to 0x1f */
33771f34979SDavid Gibson			bus-range = <0x20 0x2f>;
3383de9c9cdSBenjamin Herrenschmidt
3393de9c9cdSBenjamin Herrenschmidt			/* Legacy interrupts (note the weird polarity, the bridge seems
3403de9c9cdSBenjamin Herrenschmidt			 * to invert PCIe legacy interrupts).
3413de9c9cdSBenjamin Herrenschmidt			 * We are de-swizzling here because the numbers are actually for
3423de9c9cdSBenjamin Herrenschmidt			 * port of the root complex virtual P2P bridge. But I want
3433de9c9cdSBenjamin Herrenschmidt			 * to avoid putting a node for it in the tree, so the numbers
3443de9c9cdSBenjamin Herrenschmidt			 * below are basically de-swizzled numbers.
3453de9c9cdSBenjamin Herrenschmidt			 * The real slot is on idsel 0, so the swizzling is 1:1
3463de9c9cdSBenjamin Herrenschmidt			 */
34771f34979SDavid Gibson			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
3483de9c9cdSBenjamin Herrenschmidt			interrupt-map = <
34971f34979SDavid Gibson				0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */
35071f34979SDavid Gibson				0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */
35171f34979SDavid Gibson				0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */
35271f34979SDavid Gibson				0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
3533de9c9cdSBenjamin Herrenschmidt		};
3543de9c9cdSBenjamin Herrenschmidt
3553de9c9cdSBenjamin Herrenschmidt		PCIE2: pciex@d40000000 {
3563de9c9cdSBenjamin Herrenschmidt			device_type = "pci";
3573de9c9cdSBenjamin Herrenschmidt			#interrupt-cells = <1>;
3583de9c9cdSBenjamin Herrenschmidt			#size-cells = <2>;
3593de9c9cdSBenjamin Herrenschmidt			#address-cells = <3>;
360accf5ef2SStefan Roese			compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
3613de9c9cdSBenjamin Herrenschmidt			primary;
36271f34979SDavid Gibson			port = <0x2>; /* port number */
36371f34979SDavid Gibson			reg = <0x0000000d 0x40000000 0x20000000	/* Config space access */
36471f34979SDavid Gibson			       0x0000000c 0x10002000 0x00001000>;	/* Registers */
36571f34979SDavid Gibson			dcr-reg = <0x140 0x020>;
36671f34979SDavid Gibson			sdr-base = <0x370>;
3673de9c9cdSBenjamin Herrenschmidt
3683de9c9cdSBenjamin Herrenschmidt			/* Outbound ranges, one memory and one IO,
3693de9c9cdSBenjamin Herrenschmidt			 * later cannot be changed
3703de9c9cdSBenjamin Herrenschmidt			 */
37171f34979SDavid Gibson			ranges = <0x02000000 0x00000000 0x80000000 0x0000000f 0x00000000 0x00000000 0x80000000
37271f34979SDavid Gibson				  0x01000000 0x00000000 0x00000000 0x0000000f 0x80020000 0x00000000 0x00010000>;
3733de9c9cdSBenjamin Herrenschmidt
3743de9c9cdSBenjamin Herrenschmidt			/* Inbound 2GB range starting at 0 */
37571f34979SDavid Gibson			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
3763de9c9cdSBenjamin Herrenschmidt
3773de9c9cdSBenjamin Herrenschmidt			/* This drives busses 10 to 0x1f */
37871f34979SDavid Gibson			bus-range = <0x30 0x3f>;
3793de9c9cdSBenjamin Herrenschmidt
3803de9c9cdSBenjamin Herrenschmidt			/* Legacy interrupts (note the weird polarity, the bridge seems
3813de9c9cdSBenjamin Herrenschmidt			 * to invert PCIe legacy interrupts).
3823de9c9cdSBenjamin Herrenschmidt			 * We are de-swizzling here because the numbers are actually for
3833de9c9cdSBenjamin Herrenschmidt			 * port of the root complex virtual P2P bridge. But I want
3843de9c9cdSBenjamin Herrenschmidt			 * to avoid putting a node for it in the tree, so the numbers
3853de9c9cdSBenjamin Herrenschmidt			 * below are basically de-swizzled numbers.
3863de9c9cdSBenjamin Herrenschmidt			 * The real slot is on idsel 0, so the swizzling is 1:1
3873de9c9cdSBenjamin Herrenschmidt			 */
38871f34979SDavid Gibson			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
3893de9c9cdSBenjamin Herrenschmidt			interrupt-map = <
39071f34979SDavid Gibson				0x0 0x0 0x0 0x1 &UIC3 0x8 0x4 /* swizzled int A */
39171f34979SDavid Gibson				0x0 0x0 0x0 0x2 &UIC3 0x9 0x4 /* swizzled int B */
39271f34979SDavid Gibson				0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */
39371f34979SDavid Gibson				0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>;
3943de9c9cdSBenjamin Herrenschmidt		};
3953de9c9cdSBenjamin Herrenschmidt	};
3963de9c9cdSBenjamin Herrenschmidt
3973de9c9cdSBenjamin Herrenschmidt	chosen {
3983de9c9cdSBenjamin Herrenschmidt		linux,stdout-path = "/plb/opb/serial@10000200";
3993de9c9cdSBenjamin Herrenschmidt	};
4003de9c9cdSBenjamin Herrenschmidt};
401