/*
 * O2D base Device Tree Source
 *
 * Copyright (C) 2012 DENX Software Engineering
 * Anatolij Gustschin <agust@denx.de>
 *
 * 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 = "ifm,o2d";
	compatible = "ifm,o2d";

	memory {
		reg = <0x00000000 0x04000000>;	// 64MB
	};

	soc5200@f0000000 {

		gpio_simple: gpio@b00 {
		};

		timer@600 {	// General Purpose Timer
			#gpio-cells = <2>;
			gpio-controller;
			fsl,has-wdt;
			fsl,wdt-on-boot = <0>;
		};

		timer@610 {
			#gpio-cells = <2>;
			gpio-controller;
		};

		timer7: timer@670 {
		};

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

		psc@2000 {		// PSC1
			compatible = "fsl,mpc5200b-psc-spi","fsl,mpc5200-psc-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;

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

		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>;
			};
		};

		sclpc@3c00 {
			compatible = "fsl,mpc5200-lpbfifo";
			reg = <0x3c00 0x60>;
			interrupts = <3 23 0>;
		};
	};

	localbus {
		ranges = <0 0 0xff000000 0x01000000
			  3 0 0xe3000000 0x00100000>;

		// flash device at LocalPlus Bus CS0
		flash@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x01000000>;
			bank-width = <1>;
			device-width = <2>;
			#size-cells = <1>;
			#address-cells = <1>;
			no-unaligned-direct-access;

			/* common layout for all machines */
			partition@0 {
				label = "u-boot";
				reg = <0x00000000 0x00040000>;
				read-only;
			};
			partition@40000 {
				label = "env";
				reg = <0x00040000 0x00020000>;
				read-only;
			};
		};

		csi@3,0 {
			compatible = "ifm,o2d-csi";
			reg = <3 0 0x00100000>;
			ifm,csi-clk-handle = <&timer7>;
			gpios = <&gpio_simple 23 0	/* imag_capture */
				 &gpio_simple 26 0	/* imag_reset */
				 &gpio_simple 29 0>;	/* imag_master_en */

			interrupts = <1 1 2>;		/* IRQ1, edge falling */

			ifm,csi-addr-bus-width = <24>;
			ifm,csi-data-bus-width = <8>;
			ifm,csi-wait-cycles = <0>;
		};
	};
};
