/*
 * Motion-PRO board Device Tree Source
 *
 * Copyright (C) 2007 Semihalf
 * Marian Balakowicz <m8@semihalf.com>
 *
 * 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.
 */

/include/ "mpc5200b.dtsi"

&gpt0 { fsl,has-wdt; };
&gpt6 { // Motion-PRO status LED
	compatible = "promess,motionpro-led";
	label = "motionpro-statusled";
	blink-delay = <100>; // 100 msec
};
&gpt7 { // Motion-PRO ready LED
	compatible = "promess,motionpro-led";
	label = "motionpro-readyled";
};

/ {
	model = "promess,motionpro";
	compatible = "promess,motionpro";

	soc5200@f0000000 {
		can@900 {
			status = "disabled";
		};

		psc@2000 {		// PSC1
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
		};

		// PSC2 in spi master mode 
		psc@2200 {		// PSC2
			compatible = "fsl,mpc5200b-psc-spi","fsl,mpc5200-psc-spi";
			cell-index = <1>;
		};

		psc@2400 {		// PSC3
			status = "disabled";
		};

		psc@2600 {		// PSC4
			status = "disabled";
		};

		psc@2800 {		// PSC5
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
		};

		psc@2c00 {		// PSC6
			status = "disabled";
		};

		ethernet@3000 {
			phy-handle = <&phy0>;
		};

		mdio@3000 {
			phy0: ethernet-phy@2 {
				reg = <2>;
			};
		};

		i2c@3d00 {
			status = "disabled";
		};

		i2c@3d40 {
			rtc@68 {
				compatible = "dallas,ds1339";
				reg = <0x68>;
			};
		};

		sram@8000 {
			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
			reg = <0x8000 0x4000>;
		};
	};

	pci@f0000d00 {
		status = "disabled";
	};

	localbus {
		ranges = <0 0 0xff000000 0x01000000
			  1 0 0x50000000 0x00010000
			  2 0 0x50010000 0x00010000
			  3 0 0x50020000 0x00010000>;

		// 8-bit DualPort SRAM on LocalPlus Bus CS1
		kollmorgen@1,0 {
			compatible = "promess,motionpro-kollmorgen";
			reg = <1 0 0x10000>;
			interrupts = <1 1 0>;
		};

		// 8-bit board CPLD on LocalPlus Bus CS2
		cpld@2,0 {
			compatible = "promess,motionpro-cpld";
			reg = <2 0 0x10000>;
		};

		// 8-bit custom Anybus Module on LocalPlus Bus CS3
		anybus@3,0 {
			compatible = "promess,motionpro-anybus";
			reg = <3 0 0x10000>;
		};
		pro_module_general@3,0 {
			compatible = "promess,pro_module_general";
			reg = <3 0 3>;
		};
		pro_module_dio@3,800 {
			compatible = "promess,pro_module_dio";
			reg = <3 0x800 2>;
		};

		// 16-bit flash device at LocalPlus Bus CS0
		flash@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x01000000>;
			bank-width = <2>;
			device-width = <2>;
			#size-cells = <1>;
			#address-cells = <1>;
		};

	};
};
