/*
 * Device Tree Source for IBM Holly (PPC 750CL with TSI controller)
 * Copyright 2007, IBM Corporation
 *
 * Stephen Winiecki <stevewin@us.ibm.com>
 * Josh Boyer <jwboyer@linux.vnet.ibm.com>
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without
 * any warranty of any kind, whether express or implied.
 *
 * To build:
 *   dtc -I dts -O asm -o holly.S -b 0 holly.dts
 *   dtc -I dts -O dtb -o holly.dtb -b 0 holly.dts
 */

/ {
	model = "41K7339";
	compatible = "ibm,holly";
	#address-cells = <1>;
	#size-cells = <1>;

	cpus {
		#address-cells = <1>;
		#size-cells =<0>;
		PowerPC,750CL@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <20>;
			i-cache-line-size = <20>;
			d-cache-size = <8000>;
			i-cache-size = <8000>;
			d-cache-sets = <80>;
			i-cache-sets = <80>;
			timebase-frequency = <2faf080>;
			clock-frequency = <23c34600>;
			bus-frequency = <bebc200>;
			32-bit;
		};
	};

	memory@0 {
		device_type = "memory";
		reg = <00000000 20000000>;
	};

  	tsi109@c0000000 {
		device_type = "tsi-bridge";
		compatible = "tsi109-bridge", "tsi108-bridge";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <00000000 c0000000 00010000>;
		reg = <c0000000 00010000>;

		i2c@7000 {
			device_type = "i2c";
			compatible  = "tsi109-i2c", "tsi108-i2c";
			interrupt-parent = <&MPIC>;
			interrupts = <e 2>;
			reg = <7000 400>;
		};

		MDIO: mdio@6000 {
			device_type = "mdio";
			compatible = "tsi109-mdio", "tsi108-mdio";
			reg = <6000 50>;
			#address-cells = <1>;
			#size-cells = <0>;

			PHY1: ethernet-phy@1 {
				compatible = "bcm5461a";
				reg = <1>;
				txc-rxc-delay-disable;
			};

			PHY2: ethernet-phy@2 {
				compatible = "bcm5461a";
				reg = <2>;
				txc-rxc-delay-disable;
			};
		};

		ethernet@6200 {
			device_type = "network";
			compatible = "tsi109-ethernet", "tsi108-ethernet";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <6000 200>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupt-parent = <&MPIC>;
			interrupts = <10 2>;
			mdio-handle = <&MDIO>;
			phy-handle = <&PHY1>;
		};

		ethernet@6600 {
			device_type = "network";
			compatible = "tsi109-ethernet", "tsi108-ethernet";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <6400 200>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupt-parent = <&MPIC>;
			interrupts = <11 2>;
			mdio-handle = <&MDIO>;
			phy-handle = <&PHY2>;
		};

		serial@7808 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <7808 200>;
			virtual-reg = <c0007808>;
			clock-frequency = <3F9C6000>;
			current-speed = <1c200>;
			interrupt-parent = <&MPIC>;
			interrupts = <c 2>;
		};

		serial@7c08 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <7c08 200>;
			virtual-reg = <c0007c08>;
			clock-frequency = <3F9C6000>;
			current-speed = <1c200>;
			interrupt-parent = <&MPIC>;
			interrupts = <d 2>;
		};

	  	MPIC: pic@7400 {
			device_type = "open-pic";
			compatible = "chrp,open-pic";
			interrupt-controller;
			#interrupt-cells = <2>;
			reg = <7400 400>;
			big-endian;
		};

		pci@1000 {
			device_type = "pci";
			compatible = "tsi109-pci", "tsi108-pci";
			#interrupt-cells = <1>;
			#size-cells = <2>;
			#address-cells = <3>;
			reg = <1000 1000>;
			bus-range = <0 0>;
			/*----------------------------------------------------+
			| PCI memory range.
			| 01 denotes I/O space
			| 02 denotes 32-bit memory space
			+----------------------------------------------------*/
			ranges = <02000000 0 40000000 40000000 0 10000000
				  01000000 0 00000000 7e000000 0 00010000>;
			clock-frequency = <7f28154>;
			interrupt-parent = <&MPIC>;
			interrupts = <17 2>;
			interrupt-map-mask = <f800 0 0 7>;
			/*----------------------------------------------------+
			| The INTA, INTB, INTC, INTD are shared.
			+----------------------------------------------------*/
			interrupt-map = <
				0800 0 0 1 &RT0 24 0
				0800 0 0 2 &RT0 25 0
				0800 0 0 3 &RT0 26 0
				0800 0 0 4 &RT0 27 0

				1000 0 0 1 &RT0 25 0
				1000 0 0 2 &RT0 26 0
				1000 0 0 3 &RT0 27 0
				1000 0 0 4 &RT0 24 0

				1800 0 0 1 &RT0 26 0
				1800 0 0 2 &RT0 27 0
				1800 0 0 3 &RT0 24 0
				1800 0 0 4 &RT0 25 0

				2000 0 0 1 &RT0 27 0
				2000 0 0 2 &RT0 24 0
				2000 0 0 3 &RT0 25 0
				2000 0 0 4 &RT0 26 0
				>;

			RT0: router@1180 {
 				device_type = "pic-router";
 				interrupt-controller;
 				big-endian;
 				clock-frequency = <0>;
 				#address-cells = <0>;
 				#interrupt-cells = <2>;
 				interrupts = <17 2>;
				interrupt-parent = <&MPIC>;
			};
		};
	};

	chosen {
		linux,stdout-path = "/tsi109@c0000000/serial@7808";
	};
};
