/*
 * Manroland mucmc52 board Device Tree Source
 *
 * Copyright (C) 2009 DENX Software Engineering GmbH
 * Heiko Schocher <hs@denx.de>
 * Copyright 2006-2007 Secret Lab Technologies Ltd.
 *
 * 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 = "manroland,mucmc52";
	compatible = "manroland,mucmc52";

	soc5200@f0000000 {
		gpt0: timer@600 {	// GPT 0 in GPIO mode
			gpio-controller;
			#gpio-cells = <2>;
		};

		gpt1: timer@610 {	// General Purpose Timer in GPIO mode
			gpio-controller;
			#gpio-cells = <2>;
		};

		gpt2: timer@620 {	// General Purpose Timer in GPIO mode
			gpio-controller;
			#gpio-cells = <2>;
		};

		gpt3: timer@630 {	// General Purpose Timer in GPIO mode
			gpio-controller;
			#gpio-cells = <2>;
		};

		timer@640 {
			status = "disabled";
		};

		timer@650 {
			status = "disabled";
		};

		timer@660 {
			status = "disabled";
		};

		timer@670 {
			status = "disabled";
		};

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

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

		can@980 {
			status = "disabled";
		};

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

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

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

		psc@2200 {		// PSC2
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
		};

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

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

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

		psc@2c00 {		// PSC6
			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
		};

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

		mdio@3000 {
			phy0: ethernet-phy@0 {
				compatible = "intel,lxt971";
				reg = <0>;
			};
		};

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

		i2c@3d40 {
			hwmon@2c {
				compatible = "ad,adm9240";
				reg = <0x2c>;
			};
			rtc@51 {
				compatible = "nxp,pcf8563";
				reg = <0x51>;
			};
		};
	};

	pci@f0000d00 {
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <
				/* IDSEL 0x10 */
				0x8000 0 0 1 &mpc5200_pic 0 3 3
				0x8000 0 0 2 &mpc5200_pic 0 3 3
				0x8000 0 0 3 &mpc5200_pic 0 2 3
				0x8000 0 0 4 &mpc5200_pic 0 1 3
				>;
		ranges = <0x42000000 0 0x60000000 0x60000000 0 0x10000000
			  0x02000000 0 0x90000000 0x90000000 0 0x10000000
			  0x01000000 0 0x00000000 0xa0000000 0 0x01000000>;
	};

	localbus {
		ranges = <0 0 0xff800000 0x00800000
			  1 0 0x80000000 0x00800000
			  3 0 0x80000000 0x00800000>;

		flash@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x00800000>;
			bank-width = <4>;
			device-width = <2>;
			#size-cells = <1>;
			#address-cells = <1>;
			partition@0 {
				label = "DTS";
				reg = <0x0 0x00100000>;
			};
			partition@100000 {
				label = "Kernel";
				reg = <0x100000 0x00200000>;
			};
			partition@300000 {
				label = "RootFS";
				reg = <0x00300000 0x00200000>;
			};
			partition@500000 {
				label = "user";
				reg = <0x00500000 0x00200000>;
			};
			partition@700000 {
				label = "U-Boot";
				reg = <0x00700000 0x00040000>;
			};
			partition@740000 {
				label = "Env";
				reg = <0x00740000 0x00020000>;
			};
			partition@760000 {
				label = "red. Env";
				reg = <0x00760000 0x00020000>;
			};
			partition@780000 {
				label = "reserve";
				reg = <0x00780000 0x00080000>;
			};
		};

		simple100: gpio-controller-100@3,600100 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600100 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple104: gpio-controller-104@3,600104 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600104 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple200: gpio-controller-200@3,600200 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600200 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple201: gpio-controller-201@3,600201 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600201 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple202: gpio-controller-202@3,600202 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600202 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple203: gpio-controller-203@3,600203 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600203 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple204: gpio-controller-204@3,600204 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600204 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple206: gpio-controller-206@3,600206 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600206 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple207: gpio-controller-207@3,600207 {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x00600207 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};
		simple20f: gpio-controller-20f@3,60020f {
			compatible = "manroland,mucmc52-aux-gpio";
			reg = <3 0x0060020f 0x1>;
			gpio-controller;
			#gpio-cells = <2>;
		};

	};
};
