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

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