/*
 * Device Tree Source for Emerson KSI8560
 *
 * Author: Alexandr Smirnov <asmirnov@ru.mvista.com>
 *
 * Based on mpc8560ads.dts
 *
 * 2008 (c) MontaVista, Software, Inc.  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.
 *
 */

/dts-v1/;

/ {
	model = "KSI8560";
	compatible = "emerson,KSI8560";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		ethernet0 = &enet0;
		ethernet1 = &enet1;
		ethernet2 = &enet2;
	};

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

		PowerPC,8560@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <32>;
			i-cache-line-size = <32>;
			d-cache-size = <0x8000>;		/* L1, 32K */
			i-cache-size = <0x8000>;		/* L1, 32K */
			timebase-frequency = <0>;		/* From U-boot */
			bus-frequency = <0>;			/* From U-boot */
			clock-frequency = <0>;			/* From U-boot */
			next-level-cache = <&L2>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x00000000 0x10000000>;			/* Fixed by bootwrapper */
	};

	soc@fdf00000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0x00000000 0xfdf00000 0x00100000>;
		bus-frequency = <0>;				/* Fixed by bootwrapper */

		memory-controller@2000 {
			compatible = "fsl,8540-memory-controller";
			reg = <0x2000 0x1000>;
			interrupt-parent = <&mpic>;
			interrupts = <0x12 0x2>;
		};

		L2: l2-cache-controller@20000 {
			compatible = "fsl,8540-l2-cache-controller";
			reg = <0x20000 0x1000>;
			cache-line-size = <0x20>;		/* 32 bytes */
			cache-size = <0x40000>;			/* L2, 256K */
			interrupt-parent = <&mpic>;
			interrupts = <0x10 0x2>;
		};

		i2c@3000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x3000 0x100>;
			interrupts = <0x2b 0x2>;
			interrupt-parent = <&mpic>;
			dfsrr;
		};

		dma@21300 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
			reg = <0x21300 0x4>;
			ranges = <0x0 0x21100 0x200>;
			cell-index = <0>;
			dma-channel@0 {
				compatible = "fsl,mpc8560-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x0 0x80>;
				cell-index = <0>;
				interrupt-parent = <&mpic>;
				interrupts = <20 2>;
			};
			dma-channel@80 {
				compatible = "fsl,mpc8560-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x80 0x80>;
				cell-index = <1>;
				interrupt-parent = <&mpic>;
				interrupts = <21 2>;
			};
			dma-channel@100 {
				compatible = "fsl,mpc8560-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x100 0x80>;
				cell-index = <2>;
				interrupt-parent = <&mpic>;
				interrupts = <22 2>;
			};
			dma-channel@180 {
				compatible = "fsl,mpc8560-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x180 0x80>;
				cell-index = <3>;
				interrupt-parent = <&mpic>;
				interrupts = <23 2>;
			};
		};

		mdio@24520 {					/* For TSECs */
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl,gianfar-mdio";
			reg = <0x24520 0x20>;

			PHY1: ethernet-phy@1 {
				interrupt-parent = <&mpic>;
				reg = <0x1>;
				device_type = "ethernet-phy";
			};

			PHY2: ethernet-phy@2 {
				interrupt-parent = <&mpic>;
				reg = <0x2>;
				device_type = "ethernet-phy";
			};
		};

		enet0: ethernet@24000 {
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
			reg = <0x24000 0x1000>;
			/* Mac address filled in by bootwrapper */
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>;
			interrupt-parent = <&mpic>;
			phy-handle = <&PHY1>;
		};

		enet1: ethernet@25000 {
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
			reg = <0x25000 0x1000>;
			/* Mac address filled in by bootwrapper */
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>;
			interrupt-parent = <&mpic>;
			phy-handle = <&PHY2>;
		};

		mpic: pic@40000 {
			#address-cells = <0>;
			#interrupt-cells = <2>;
			interrupt-controller;
			reg = <0x40000 0x40000>;
			device_type = "open-pic";
		};

		cpm@919c0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc8560-cpm", "fsl,cpm2";
			reg = <0x919c0 0x30>;
			ranges;

			muram@80000 {
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x80000 0x10000>;

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

			brg@919f0 {
				compatible = "fsl,mpc8560-brg",
					     "fsl,cpm2-brg",
					     "fsl,cpm-brg";
				reg = <0x919f0 0x10 0x915f0 0x10>;
				clock-frequency = <165000000>;	/* 166MHz */
			};

			CPMPIC: pic@90c00 {
				#address-cells = <0>;
				#interrupt-cells = <2>;
				interrupt-controller;
				interrupts = <0x2e 0x2>;
				interrupt-parent = <&mpic>;
				reg = <0x90c00 0x80>;
				compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic";
			};

			serial@91a00 {
				device_type = "serial";
				compatible = "fsl,mpc8560-scc-uart",
					     "fsl,cpm2-scc-uart";
				reg = <0x91a00 0x20 0x88000 0x100>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0x800000>;
				current-speed = <0x1c200>;
				interrupts = <0x28 0x8>;
				interrupt-parent = <&CPMPIC>;
			};

			serial@91a20 {
				device_type = "serial";
				compatible = "fsl,mpc8560-scc-uart",
					     "fsl,cpm2-scc-uart";
				reg = <0x91a20 0x20 0x88100 0x100>;
				fsl,cpm-brg = <2>;
				fsl,cpm-command = <0x4a00000>;
				current-speed = <0x1c200>;
				interrupts = <0x29 0x8>;
				interrupt-parent = <&CPMPIC>;
			};

			mdio@90d00 {				/* For FCCs */
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,cpm2-mdio-bitbang";
				reg = <0x90d00 0x14>;
				fsl,mdio-pin = <24>;
				fsl,mdc-pin = <25>;

				PHY0: ethernet-phy@0 {
					interrupt-parent = <&mpic>;
					reg = <0x0>;
					device_type = "ethernet-phy";
				};
			};

			enet2: ethernet@91300 {
				device_type = "network";
				compatible = "fsl,mpc8560-fcc-enet",
					     "fsl,cpm2-fcc-enet";
				reg = <0x91300 0x20 0x88400 0x100 0x91390 0x1>;
				/* Mac address filled in by bootwrapper */
				local-mac-address = [ 00 00 00 00 00 00 ];
				fsl,cpm-command = <0x12000300>;
				interrupts = <0x20 0x8>;
				interrupt-parent = <&CPMPIC>;
				phy-handle = <&PHY0>;
			};
		};
	};

	localbus@fdf05000 {
		#address-cells = <2>;
		#size-cells = <1>;
		compatible = "fsl,mpc8560-localbus";
		reg = <0xfdf05000 0x68>;

		ranges = <0x0 0x0 0xe0000000 0x00800000
			  0x4 0x0 0xe8080000 0x00080000>;

		flash@0,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "jedec-flash";
			reg = <0x0 0x0 0x800000>;
			bank-width = <0x2>;

			partition@0 {
				label = "Primary Kernel";
				reg = <0x0 0x180000>;
			};
			partition@180000 {
				label = "Primary Filesystem";
				reg = <0x180000 0x580000>;
			};
			partition@700000 {
				label = "Monitor";
				reg = <0x300000 0x100000>;
				read-only;
			};
		};

		cpld@4,0 {
			compatible = "emerson,KSI8560-cpld";
			reg = <0x4 0x0 0x80000>;
		};
	};


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