/*
 * Copyright 2012 Markus Pargmann, 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
 */

#include "imx27-phytec-phycard-s-som.dts"

/ {
	model = "Phytec pca100 rapid development kit";
	compatible = "phytec,imx27-pca100-rdk", "phytec,imx27-pca100", "fsl,imx27";

	display: display {
		model = "Primeview-PD050VL1";
		native-mode = <&timing0>;
		bits-per-pixel = <16>;  /* non-standard but required */
		fsl,pcr = <0xf0c88080>;	/* non-standard but required */
		display-timings {
			timing0: 640x480 {
				hactive = <640>;
				vactive = <480>;
				hback-porch = <112>;
				hfront-porch = <36>;
				hsync-len = <32>;
				vback-porch = <33>;
				vfront-porch = <33>;
				vsync-len = <2>;
				clock-frequency = <25000000>;
			};
		};
	};

	regulators {
		compatible = "simple-bus";

		reg_3v3: 3v3 {
			compatible = "regulator-fixed";
			regulator-name = "3V3";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};
	};
};

&fb {
	display = <&display>;
	status = "okay";
};

&i2c1 {
	status = "okay";

	rtc@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
	};

	adc@64 {
		compatible = "maxim,max1037";
		vcc-supply = <&reg_3v3>;
		reg = <0x64>;
	};
};

&owire {
	status = "okay";
};

&sdhci2 {
	cd-gpios = <&gpio3 29 0>;
	status = "okay";
};

&uart1 {
	fsl,uart-has-rtscts;
	status = "okay";
};

&uart2 {
	fsl,uart-has-rtscts;
	status = "okay";
};

&uart3 {
	fsl,uart-has-rtscts;
	status = "okay";
};
