/*
 * Copyright 2012 Philippe Reynes <tremyfr@yahoo.fr>
 * Copyright 2012 Armadeus Systems <support@armadeus.com>
 *
 * Based on code which is: 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 = "Armadeus Systems APF27 module";
	compatible = "armadeus,imx27-apf27", "fsl,imx27";

	memory@a0000000 {
		reg = <0xa0000000 0x04000000>;
	};
};

&clk_osc26m {
	clock-frequency = <0>;
};

&iomuxc {
	imx27-apf27 {
		pinctrl_fec1: fec1grp {
			fsl,pins = <
				MX27_PAD_SD3_CMD__FEC_TXD0 0x0
				MX27_PAD_SD3_CLK__FEC_TXD1 0x0
				MX27_PAD_ATA_DATA0__FEC_TXD2 0x0
				MX27_PAD_ATA_DATA1__FEC_TXD3 0x0
				MX27_PAD_ATA_DATA2__FEC_RX_ER 0x0
				MX27_PAD_ATA_DATA3__FEC_RXD1 0x0
				MX27_PAD_ATA_DATA4__FEC_RXD2 0x0
				MX27_PAD_ATA_DATA5__FEC_RXD3 0x0
				MX27_PAD_ATA_DATA6__FEC_MDIO 0x0
				MX27_PAD_ATA_DATA7__FEC_MDC 0x0
				MX27_PAD_ATA_DATA8__FEC_CRS 0x0
				MX27_PAD_ATA_DATA9__FEC_TX_CLK 0x0
				MX27_PAD_ATA_DATA10__FEC_RXD0 0x0
				MX27_PAD_ATA_DATA11__FEC_RX_DV 0x0
				MX27_PAD_ATA_DATA12__FEC_RX_CLK 0x0
				MX27_PAD_ATA_DATA13__FEC_COL 0x0
				MX27_PAD_ATA_DATA14__FEC_TX_ER 0x0
				MX27_PAD_ATA_DATA15__FEC_TX_EN 0x0
			>;
		};

		pinctrl_uart1: uart1grp {
			fsl,pins = <
				MX27_PAD_UART1_TXD__UART1_TXD 0x0
				MX27_PAD_UART1_RXD__UART1_RXD 0x0
			>;
		};
	};
};

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	status = "okay";
};

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec1>;
	status = "okay";
};

&nfc {
	status = "okay";
	nand-bus-width = <16>;
	nand-ecc-mode = "hw";
	nand-on-flash-bbt;

	partition@0 {
		label = "u-boot";
		reg = <0x0 0x100000>;
	};

	partition@100000 {
		label = "env";
		reg = <0x100000 0x80000>;
	};

	partition@180000 {
		label = "env2";
		reg = <0x180000 0x80000>;
	};

	partition@200000 {
		label = "firmware";
		reg = <0x200000 0x80000>;
	};

	partition@280000 {
		label = "dtb";
		reg = <0x280000 0x80000>;
	};

	partition@300000 {
		label = "kernel";
		reg = <0x300000 0x500000>;
	};

	partition@800000 {
		label = "rootfs";
		reg = <0x800000 0xf800000>;
	};
};
