/*
 * MPC866 ADS Device Tree Source
 *
 * Copyright 2006 MontaVista Software, Inc.
 * Copyright 2008 Freescale Semiconductor, 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.
 */

/dts-v1/;

/ {
	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 = <0x0>;
			d-cache-line-size = <16>;	// 16 bytes
			i-cache-line-size = <16>;	// 16 bytes
			d-cache-size = <0x2000>;		// L1, 8K
			i-cache-size = <0x4000>;		// L1, 16K
			timebase-frequency = <0>;
			bus-frequency = <0>;
			clock-frequency = <0>;
			interrupts = <15 2>;	// decrementer interrupt
			interrupt-parent = <&PIC>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x800000>;
	};

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

		ranges = <
			0x1 0x0 0xff080000 0x8000
			0x5 0x0 0xff0a0000 0x8000
		>;

		board-control@1,0 {
			reg = <0x1 0x0 0x20 0x5 0x300 0x4>;
			compatible = "fsl,mpc866ads-bcsr";
		};
	};

	soc@ff000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0x0 0xff000000 0x100000>;
		reg = <0xff000000 0x200>;
		bus-frequency = <0>;

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

		ethernet@e00 {
			device_type = "network";
			compatible = "fsl,mpc866-fec-enet",
			             "fsl,pq1-fec-enet";
			reg = <0xe00 0x188>;
			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 = <0x0 0x24>;
			compatible = "fsl,mpc866-pic", "fsl,pq1-pic";
		};

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

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

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

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

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


			serial@a80 {
				device_type = "serial";
				compatible = "fsl,mpc866-smc-uart",
				             "fsl,cpm1-smc-uart";
				reg = <0xa80 0x10 0x3e80 0x40>;
				interrupts = <4>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0x90>;
			};

			serial@a90 {
				device_type = "serial";
				compatible = "fsl,mpc866-smc-uart",
				             "fsl,cpm1-smc-uart";
				reg = <0xa90 0x10 0x3f80 0x40>;
				interrupts = <3>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <2>;
				fsl,cpm-command = <0xd0>;
			};

			ethernet@a00 {
				device_type = "network";
				compatible = "fsl,mpc866-scc-enet",
				             "fsl,cpm1-scc-enet";
				reg = <0xa00 0x18 0x3c00 0x100>;
				local-mac-address = [ 00 00 00 00 00 00 ];
				interrupts = <30>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-command = <0000>;
				linux,network-index = <1>;
			};

			i2c@860 {
				compatible = "fsl,mpc866-i2c",
					     "fsl,cpm1-i2c";
				reg = <0x860 0x20 0x3c80 0x30>;
				interrupts = <16>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-command = <0x10>;
				#address-cells = <1>;
				#size-cells = <0>;
			};
		};
	};

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