/*
 * 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>;
				device_type = "ethernet-phy";
			};
		};

		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";
	};
};
