/*
 * Digsy MTC board Device Tree Source
 *
 * Copyright (C) 2009 Semihalf
 *
 * Based on the CM5200 by M. Balakowicz
 *
 * 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 { gpio-controller; fsl,has-wdt; };
&gpt1 { gpio-controller; };

/ {
	model = "intercontrol,digsy-mtc";
	compatible = "intercontrol,digsy-mtc";

	memory@0 {
		reg = <0x00000000 0x02000000>;	// 32MB
	};

	soc5200@f0000000 {
		rtc@800 {
			status = "disabled";
		};

		spi@f00 {
			msp430@0 {
				compatible = "spidev";
				spi-max-frequency = <32000>;
				reg = <0>;
			};
		};

		psc@2000 {		// PSC1
			status = "disabled";
		};

		psc@2200 {		// PSC2
			status = "disabled";
		};

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

		psc@2600 {		// PSC4
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
		};

		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@0 {
				reg = <0>;
			};
		};

		i2c@3d00 {
			eeprom@50 {
				compatible = "atmel,24c08";
				reg = <0x50>;
			};

			rtc@56 {
				compatible = "microcrystal,rv3029";
				reg = <0x56>;
			};

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

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

	pci@f0000d00 {
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <0xc000 0 0 1 &mpc5200_pic 0 0 3
				 0xc000 0 0 2 &mpc5200_pic 0 0 3
				 0xc000 0 0 3 &mpc5200_pic 0 0 3
				 0xc000 0 0 4 &mpc5200_pic 0 0 3>;
		clock-frequency = <0>; // From boot loader
		interrupts = <2 8 0 2 9 0 2 10 0>;
		bus-range = <0 0>;
		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x10000000
			  0x02000000 0 0x90000000 0x90000000 0 0x10000000
			  0x01000000 0 0x00000000 0xa0000000 0 0x01000000>;
	};

	localbus {
		ranges = <0 0 0xff000000 0x1000000
			  4 0 0x60000000 0x0001000>;

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

			partition@0 {
				label = "kernel";
				reg = <0x0 0x00200000>;
			};
			partition@200000 {
				label = "root";
				reg = <0x00200000 0x00300000>;
			};
			partition@500000 {
				label = "user";
				reg = <0x00500000 0x00a00000>;
			};
			partition@f00000 {
				label = "u-boot";
				reg = <0x00f00000 0x100000>;
			};
		};

		can@4,0 {
			compatible = "nxp,sja1000";
			reg = <4 0x000 0x80>;
			nxp,external-clock-frequency = <24000000>;
			interrupts = <1 2 3>; // Level-low
		};

		can@4,100 {
			compatible = "nxp,sja1000";
			reg = <4 0x100 0x80>;
			nxp,external-clock-frequency = <24000000>;
			interrupts = <1 2 3>;  // Level-low
		};

		serial@4,200 {
			compatible = "nxp,sc28l92";
			reg = <4 0x200 0x10>;
			interrupts = <1 3 3>;
		};
	};
};
