/*
 * a3m071 board Device Tree Source
 *
 * Copyright 2012 Stefan Roese <sr@denx.de>
 *
 * Copyright (C) 2011 DENX Software Engineering GmbH
 * Heiko Schocher <hs@denx.de>
 *
 * 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"

/ {
	model = "anonymous,a3m071";
	compatible = "anonymous,a3m071";

	soc5200@f0000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "fsl,mpc5200b-immr";
		ranges = <0 0xf0000000 0x0000c000>;
		reg = <0xf0000000 0x00000100>;
		bus-frequency = <0>; /* From boot loader */
		system-frequency = <0>; /* From boot loader */

		timer@600 {
			fsl,has-wdt;
		};

		spi@f00 {
			status = "disabled";
		};

		usb: usb@1000 {
			status = "disabled";
		};

		psc@2000 {
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
			reg = <0x2000 0x100>;
			interrupts = <2 1 0>;
		};

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

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

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

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

		psc@2c00 {		// PSC6
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
			reg = <0x2c00 0x100>;
			interrupts = <2 4 0>;
		};

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

		mdio@3000 {
			phy0: ethernet-phy@3 {
				reg = <0x03>;
			};
		};

		ata@3a00 {
			status = "disabled";
		};

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

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

	localbus {
		compatible = "fsl,mpc5200b-lpb","simple-bus";
		#address-cells = <2>;
		#size-cells = <1>;
		ranges = <0 0 0xfc000000 0x02000000
			  3 0 0xe9000000 0x00080000
			  5 0 0xe8000000 0x00010000>;

		flash@0,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0 0x0 0x02000000>;
			compatible = "cfi-flash";
			bank-width = <2>;
			partition@0x0 {
				label = "u-boot";
				reg = <0x00000000 0x00040000>;
				read-only;
			};
			partition@0x00040000 {
				label = "env";
				reg = <0x00040000 0x00020000>;
			};
			partition@0x00060000 {
				label = "dtb";
				reg = <0x00060000 0x00020000>;
			};
			partition@0x00080000 {
				label = "kernel";
				reg = <0x00080000 0x00500000>;
			};
			partition@0x00580000 {
				label = "root";
				reg = <0x00580000 0x00A80000>;
			};
		};

		fpga@3,0 {
			compatible = "anonymous,a3m071-fpga";
			reg = <3 0x0 0x00080000
			       5 0x0 0x00010000>;
			interrupts = <0 0 3>;  /* level low */
		};
	};

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