/*
 * Copyright 2012 Sascha Hauer, Pengutronix
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
/include/ "imx27.dtsi"

/ {
	model = "Phytec pcm038";
	compatible = "phytec,imx27-pcm038", "fsl,imx27";

	memory {
		reg = <0x0 0x0>;
	};

	soc {
		aipi@10000000 { /* aipi */

			wdog@10002000 {
				status = "okay";
			};

			serial@1000a000 {
				fsl,uart-has-rtscts;
				status = "okay";
			};

			serial@1000b000 {
				fsl,uart-has-rtscts;
				status = "okay";
			};

			serial@1000c000 {
				fsl,uart-has-rtscts;
				status = "okay";
			};

			ethernet@1002b000 {
				status = "okay";
			};

			i2c@1001d000 {
				clock-frequency = <400000>;
				status = "okay";
				at24@4c {
					compatible = "at,24c32";
					pagesize = <32>;
					reg = <0x52>;
				};
				pcf8563@51 {
					compatible = "nxp,pcf8563";
					reg = <0x51>;
				};
				lm75@4a {
					compatible = "national,lm75";
					reg = <0x4a>;
				};
			};
		};
	};

	nor_flash@c0000000 {
		compatible = "cfi-flash";
		bank-width = <2>;
		reg = <0xc0000000 0x02000000>;
		#address-cells = <1>;
		#size-cells = <1>;
	};
};
