/*
 * MGSUVD Device Tree Source
 *
 * Copyright 2008 DENX Software Engineering GmbH
 * Heiko Schocher <hs@denx.de>
 *
 * 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 = "MGSUVD";
	compatible = "keymile,mgsuvd";
	#address-cells = <1>;
	#size-cells = <1>;

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

		PowerPC,852@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <16>;
			i-cache-line-size = <16>;
			d-cache-size = <8192>;
			i-cache-size = <8192>;
			timebase-frequency = <0>;	/* Filled in by u-boot */
			bus-frequency = <0>;		/* Filled in by u-boot */
			clock-frequency = <0>;		/* Filled in by u-boot */
			interrupts = <15 2>;		/* decrementer interrupt */
			interrupt-parent = <&PIC>;
		};
	};

	memory {
		device_type = "memory";
		reg = <00000000 0x4000000>;  /* Filled in by u-boot */
	};

	localbus@fff00100 {
		compatible = "fsl,mpc852-localbus", "fsl,pq1-localbus", "simple-bus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <0xfff00100 0x40>;

		ranges = <0 0 0xf0000000 0x01000000>;  /* Filled in by u-boot */

		flash@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x1000000>;
			#address-cells = <1>;
			#size-cells = <1>;
			bank-width = <1>;
			device-width = <1>;
			partition@0 {
				label = "u-boot";
				reg = <0 0x80000>;
			};
			partition@80000 {
				label = "env";
				reg = <0x80000 0x20000>;
			};
			partition@a0000 {
				label = "kernel";
				reg = <0xa0000 0x1e0000>;
			};
			partition@280000 {
				label = "dtb";
				reg = <0x280000 0x20000>;
			};
			partition@2a0000 {
			        label = "root";
			        reg = <0x2a0000 0x500000>;
			};
			partition@7a0000 {
			        label = "user";
			        reg = <0x7a0000 0x860000>;
			};
		};
	};

	soc@fff00000 {
		compatible = "fsl,mpc852", "fsl,pq1-soc", "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0 0xfff00000 0x00004000>;

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

		cpm@9c0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc852-cpm", "fsl,cpm1", "simple-bus";
			interrupts = <0>;	/* cpm error interrupt */
			interrupt-parent = <&CPM_PIC>;
			reg = <0x9c0 10>;
			ranges;

			muram@2000 {
				compatible = "fsl,cpm-muram";
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 0x2000 0x2000>;

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

			brg@9f0 {
				compatible = "fsl,mpc852-brg",
				             "fsl,cpm1-brg",
				             "fsl,cpm-brg";
				reg = <0x9f0 0x10>;
				clock-frequency = <0>; /* Filled in by u-boot */
			};

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

			/* MON-1 */
			serial@a80 {
				device_type = "serial";
				compatible = "fsl,cpm1-smc-uart";
				reg = <0xa80 0x10 0x3fc0 0x40>;
				interrupts = <4>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0x0090>;
				current-speed = <0>; /* Filled in by u-boot */
			};

			ethernet@a40 {
				device_type = "network";
				compatible  = "fsl,mpc866-scc-enet",
				              "fsl,cpm1-scc-enet";
				reg = <0xa40 0x18 0x3e00 0x100>;
				local-mac-address = [ 00 00 00 00 00 00 ];  /* Filled in by u-boot */
				interrupts = <28>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-command = <0x80>;
				fixed-link = <0 0 10 0 0>;
			};
		};
	};
};
