/*
 * Device Tree Source for IFM PDM360NG.
 *
 * Copyright 2009 - 2010 DENX Software Engineering.
 * Anatolij Gustschin <agust@denx.de>
 *
 * Based on MPC5121E ADS dts.
 * 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.
 */

#include <mpc5121.dtsi>

/ {
	model = "pdm360ng";
	compatible = "ifm,pdm360ng", "fsl,mpc5121";
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&ipic>;

	memory {
		device_type = "memory";
		reg = <0x00000000 0x20000000>;	// 512MB at 0
	};

	nfc@40000000 {
		bank-width = <0x1>;
		chips = <0x1>;

		partition@0 {
			label = "nand0";
			reg = <0x0 0x40000000>;
		};
	};

	localbus@80000020 {
		ranges = <0x0 0x0 0xf0000000 0x10000000   /* Flash */
			  0x2 0x0 0x50040000 0x00020000>; /* CS2: MRAM */

		flash@0,0 {
			compatible = "amd,s29gl01gp", "cfi-flash";
			reg = <0 0x00000000 0x08000000
			       0 0x08000000 0x08000000>;
			#address-cells = <1>;
			#size-cells = <1>;
			bank-width = <4>;
			device-width = <2>;

			partition@0 {
				label = "u-boot";
				reg = <0x00000000 0x00080000>;
				read-only;
			};
			partition@80000 {
				label = "environment";
				reg = <0x00080000 0x00080000>;
				read-only;
			};
			partition@100000 {
				label = "splash-image";
				reg = <0x00100000 0x00080000>;
				read-only;
			};
			partition@180000 {
				label = "device-tree";
				reg = <0x00180000 0x00040000>;
			};
			partition@1c0000 {
				label = "kernel";
				reg = <0x001c0000 0x00500000>;
			};
			partition@6c0000 {
				label = "filesystem";
				reg = <0x006c0000 0x07940000>;
			};
		};

		mram0@2,0 {
			compatible = "mtd-ram";
			reg = <2 0x00000 0x10000>;
			bank-width = <2>;
		};

		mram1@2,10000 {
			compatible = "mtd-ram";
			reg = <2 0x010000 0x10000>;
			bank-width = <2>;
		};
	};

	soc@80000000 {

		i2c@1700 {
			fsl,preserve-clocking;

			eeprom@50 {
				compatible = "at,24c01";
				reg = <0x50>;
			};

			rtc@68 {
				compatible = "stm,m41t00";
				reg = <0x68>;
			};
		};

		i2c@1720 {
			status = "disabled";
		};

		i2c@1740 {
			fsl,preserve-clocking;
		};

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

		mdio@2800 {
			phy0: ethernet-phy@1f {
				compatible = "smsc,lan8700";
				reg = <0x1f>;
			};
		};

		/* USB1 using external ULPI PHY */
		usb@3000 {
			dr_mode = "host";
		};

		/* USB0 using internal UTMI PHY */
		usb@4000 {
			fsl,invert-pwr-fault;
		};

		psc@11000 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11100 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11200 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11300 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11400 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11500 {
			status = "disabled";
		};

		psc@11600 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11700 {
			status = "disabled";
		};

		psc@11800 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};

		psc@11900 {
			compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
			#address-cells = <1>;
			#size-cells = <0>;

			/* ADS7845 touch screen controller */
			ts@0 {
				compatible = "ti,ads7846";
				reg = <0x0>;
				spi-max-frequency = <3000000>;
				/* pen irq is GPIO25 */
				interrupts = <78 0x8>;
			};
		};

		psc@11a00 {
			status = "disabled";
		};

		psc@11b00 {
			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
		};
	};
};
