/*
 * 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";
		};
	};
};
