/*
 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
 *
 * 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 "imx1.dtsi"

/ {
	model = "Freescale MX1 ADS";
	compatible = "fsl,imx1ads", "fsl,imx1";

	chosen {
		stdout-path = &uart1;
	};

	memory {
		reg = <0x08000000 0x04000000>;
	};

	clocks {
		#address-cells = <1>;
		#size-cells = <0>;

		clk32 {
			compatible = "fsl,imx-clk32", "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32000>;
		};
	};
};

&cspi1 {
	pinctrl-0 = <&pinctrl_cspi1>;
	cs-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&i2c {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c>;
	status = "okay";

	extgpio0: pcf8575@22 {
		compatible = "nxp,pcf8575";
		reg = <0x22>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	extgpio1: pcf8575@24 {
		compatible = "nxp,pcf8575";
		reg = <0x24>;
		gpio-controller;
		#gpio-cells = <2>;
	};
};

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

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	uart-has-rtscts;
	status = "okay";
};

&weim {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_weim>;
	status = "okay";

	nor: nor@0,0 {
		compatible = "cfi-flash";
		reg = <0 0x00000000 0x02000000>;
		bank-width = <4>;
		fsl,weim-cs-timing = <0x00003e00 0x00000801>;
		#address-cells = <1>;
		#size-cells = <1>;
	};
};

&iomuxc {
	imx1-ads {
		pinctrl_cspi1: cspi1grp {
			fsl,pins = <
				MX1_PAD_SPI1_MISO__SPI1_MISO	0x0
				MX1_PAD_SPI1_MOSI__SPI1_MOSI	0x0
				MX1_PAD_SPI1_RDY__SPI1_RDY	0x0
				MX1_PAD_SPI1_SCLK__SPI1_SCLK	0x0
				MX1_PAD_SPI1_SS__GPIO3_15	0x0
			>;
		};

		pinctrl_i2c: i2cgrp {
			fsl,pins = <
				MX1_PAD_I2C_SCL__I2C_SCL	0x0
				MX1_PAD_I2C_SDA__I2C_SDA	0x0
			>;
		};

		pinctrl_uart1: uart1grp {
			fsl,pins = <
				MX1_PAD_UART1_TXD__UART1_TXD	0x0
				MX1_PAD_UART1_RXD__UART1_RXD	0x0
				MX1_PAD_UART1_CTS__UART1_CTS	0x0
				MX1_PAD_UART1_RTS__UART1_RTS	0x0
			>;
		};

		pinctrl_uart2: uart2grp {
			fsl,pins = <
				MX1_PAD_UART2_TXD__UART2_TXD	0x0
				MX1_PAD_UART2_RXD__UART2_RXD	0x0
				MX1_PAD_UART2_CTS__UART2_CTS	0x0
				MX1_PAD_UART2_RTS__UART2_RTS	0x0
			>;
		};

		pinctrl_weim: weimgrp {
			fsl,pins = <
				MX1_PAD_A0__A0			0x0
				MX1_PAD_A16__A16		0x0
				MX1_PAD_A17__A17		0x0
				MX1_PAD_A18__A18		0x0
				MX1_PAD_A19__A19		0x0
				MX1_PAD_A20__A20		0x0
				MX1_PAD_A21__A21		0x0
				MX1_PAD_A22__A22		0x0
				MX1_PAD_A23__A23		0x0
				MX1_PAD_A24__A24		0x0
				MX1_PAD_BCLK__BCLK		0x0
				MX1_PAD_CS4__CS4		0x0
				MX1_PAD_DTACK__DTACK		0x0
				MX1_PAD_ECB__ECB		0x0
				MX1_PAD_LBA__LBA		0x0
			>;
		};
	};
};
