/*
 * 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 = "fsl,mpc866ads";
	#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 = <10>;	// 16 bytes
			i-cache-line-size = <10>;	// 16 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 = <&PIC>;
		};
	};

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

	localbus@ff000100 {
		compatible = "fsl,mpc866-localbus", "fsl,pq1-localbus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <ff000100 40>;

		ranges = <
			1 0 ff080000 00008000
			5 0 ff0a0000 00008000
		>;

		board-control@1,0 {
			reg = <1 0 20 5 300 4>;
			compatible = "fsl,mpc866ads-bcsr";
		};
	};

	soc@ff000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0 ff000000 00100000>;
		reg = <ff000000 00000200>;
		bus-frequency = <0>;

		mdio@e00 {
			compatible = "fsl,mpc866-fec-mdio", "fsl,pq1-fec-mdio";
			reg = <e00 188>;
			#address-cells = <1>;
			#size-cells = <0>;
			PHY: ethernet-phy@f {
				reg = <f>;
				device_type = "ethernet-phy";
			};
		};

		ethernet@e00 {
			device_type = "network";
			compatible = "fsl,mpc866-fec-enet",
			             "fsl,pq1-fec-enet";
			reg = <e00 188>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupts = <3 1>;
			interrupt-parent = <&PIC>;
			phy-handle = <&PHY>;
			linux,network-index = <0>;
		};

		PIC: pic@0 {
			interrupt-controller;
			#interrupt-cells = <2>;
			reg = <0 24>;
			compatible = "fsl,mpc866-pic", "fsl,pq1-pic";
		};

		cpm@9c0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc866-cpm", "fsl,cpm1";
			ranges;
			reg = <9c0 40>;
			brg-frequency = <0>;
			interrupts = <0 2>;	// cpm error interrupt
			interrupt-parent = <&CPM_PIC>;

			muram@2000 {
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 2000 2000>;

				data@0 {
					compatible = "fsl,cpm-muram-data";
					reg = <0 1c00>;
				};
			};

			brg@9f0 {
				compatible = "fsl,mpc866-brg",
					     "fsl,cpm1-brg",
					     "fsl,cpm-brg";
				reg = <9f0 10>;
				clock-frequency = <0>;
			};

			CPM_PIC: pic@930 {
				interrupt-controller;
				#address-cells = <0>;
				#interrupt-cells = <1>;
				interrupts = <5 2 0 2>;
				interrupt-parent = <&PIC>;
				reg = <930 20>;
				compatible = "fsl,mpc866-cpm-pic",
				             "fsl,cpm1-pic";
			};


			serial@a80 {
				device_type = "serial";
				compatible = "fsl,mpc866-smc-uart",
				             "fsl,cpm1-smc-uart";
				reg = <a80 10 3e80 40>;
				interrupts = <4>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0090>;
			};

			serial@a90 {
				device_type = "serial";
				compatible = "fsl,mpc866-smc-uart",
				             "fsl,cpm1-smc-uart";
				reg = <a90 10 3f80 40>;
				interrupts = <3>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <2>;
				fsl,cpm-command = <00d0>;
			};

			ethernet@a00 {
				device_type = "network";
				compatible = "fsl,mpc866-scc-enet",
				             "fsl,cpm1-scc-enet";
				reg = <a00 18 3c00 100>;
				local-mac-address = [ 00 00 00 00 00 00 ];
				interrupts = <1e>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-command = <0000>;
				linux,network-index = <1>;
			};
		};
	};

	chosen {
		linux,stdout-path = "/soc/cpm/serial@a80";
	};
};
