/*
 * MPC866 ADS Device Tree Source
 *
 * Copyright 2006 MontaVista Software, Inc.
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */


/ {
	model = "MPC866ADS";
	compatible = "mpc8xx";
	#address-cells = <1>;
	#size-cells = <1>;

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,866@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <20>;	// 32 bytes
			i-cache-line-size = <20>;	// 32 bytes
			d-cache-size = <2000>;		// L1, 8K
			i-cache-size = <4000>;		// L1, 16K
			timebase-frequency = <0>;
			bus-frequency = <0>;
			clock-frequency = <0>;
			interrupts = <f 2>;	// decrementer interrupt
			interrupt-parent = <&Mpc8xx_pic>;
		};
	};

	memory {
		device_type = "memory";
		reg = <00000000 800000>;
	};

	soc866@ff000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0 ff000000 00100000>;
		reg = <ff000000 00000200>;
		bus-frequency = <0>;
		mdio@e80 {
			device_type = "mdio";
			compatible = "fs_enet";
			reg = <e80 8>;
			#address-cells = <1>;
			#size-cells = <0>;
			phy: ethernet-phy@f {
				reg = <f>;
				device_type = "ethernet-phy";
			};
		};

		fec@e00 {
			device_type = "network";
			compatible = "fs_enet";
			model = "FEC";
			device-id = <1>;
			reg = <e00 188>;
			mac-address = [ 00 00 0C 00 01 FD ];
			interrupts = <3 1>;
			interrupt-parent = <&Mpc8xx_pic>;
			phy-handle = <&Phy>;
		};

		mpc8xx_pic: pic@ff000000 {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
			reg = <0 24>;
			device_type = "mpc8xx-pic";
			compatible = "CPM";
		};

		cpm@ff000000 {
			#address-cells = <1>;
			#size-cells = <1>;
			device_type = "cpm";
			model = "CPM";
			ranges = <0 0 4000>;
			reg = <860 f0>;
			command-proc = <9c0>;
			brg-frequency = <0>;
			interrupts = <0 2>;	// cpm error interrupt
			interrupt-parent = <&Cpm_pic>;

			cpm_pic: pic@930 {
				interrupt-controller;
				#address-cells = <0>;
				#interrupt-cells = <2>;
				interrupts = <5 2 0 2>;
				interrupt-parent = <&Mpc8xx_pic>;
				reg = <930 20>;
				device_type = "cpm-pic";
				compatible = "CPM";
			};

			smc@a80 {
				device_type = "serial";
				compatible = "cpm_uart";
				model = "SMC";
				device-id = <1>;
				reg = <a80 10 3e80 40>;
				clock-setup = <00ffffff 0>;
				rx-clock = <1>;
				tx-clock = <1>;
				current-speed = <0>;
				interrupts = <4 3>;
				interrupt-parent = <&Cpm_pic>;
			};

			smc@a90 {
				device_type = "serial";
				compatible = "cpm_uart";
				model = "SMC";
				device-id = <2>;
				reg = <a90 20 3f80 40>;
				clock-setup = <ff00ffff 90000>;
				rx-clock = <2>;
				tx-clock = <2>;
				current-speed = <0>;
				interrupts = <3 3>;
				interrupt-parent = <&Cpm_pic>;
			};

			scc@a00 {
				device_type = "network";
				compatible = "fs_enet";
				model = "SCC";
				device-id = <1>;
				reg = <a00 18 3c00 80>;
				mac-address = [ 00 00 0C 00 03 FD ];
				interrupts = <1e 3>;
				interrupt-parent = <&Cpm_pic>;
			};
		};
	};
};
