/*
 * Embedded Artists LPC3250 board
 *
 * Copyright 2012 Roland Stigge <stigge@antcom.de>
 *
 * 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 "lpc32xx.dtsi"

/ {
	model = "Embedded Artists LPC3250 board based on NXP LPC3250";
	compatible = "ea,ea3250", "nxp,lpc3250";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		device_type = "memory";
		reg = <0x80000000 0x4000000>;
	};

	ahb {
		mac: ethernet@31060000 {
			phy-mode = "rmii";
			use-iram;
		};

		/* 128MB Flash via SLC NAND controller */
		slc: flash@20020000 {
			status = "okay";
			#address-cells = <1>;
			#size-cells = <1>;

			nxp,wdr-clks = <14>;
			nxp,wwidth = <260000000>;
			nxp,whold = <104000000>;
			nxp,wsetup = <200000000>;
			nxp,rdr-clks = <14>;
			nxp,rwidth = <34666666>;
			nxp,rhold = <104000000>;
			nxp,rsetup = <200000000>;
			nand-on-flash-bbt;
			gpios = <&gpio 5 19 1>; /* GPO_P3 19, active low */

			mtd0@00000000 {
				label = "ea3250-boot";
				reg = <0x00000000 0x00080000>;
				read-only;
			};

			mtd1@00080000 {
				label = "ea3250-uboot";
				reg = <0x00080000 0x000c0000>;
				read-only;
			};

			mtd2@00140000 {
				label = "ea3250-kernel";
				reg = <0x00140000 0x00400000>;
			};

			mtd3@00540000 {
				label = "ea3250-rootfs";
				reg = <0x00540000 0x07ac0000>;
			};
		};

		apb {
			uart5: serial@40090000 {
				status = "okay";
			};

			uart3: serial@40080000 {
				status = "okay";
			};

			uart6: serial@40098000 {
				status = "okay";
			};

			i2c1: i2c@400A0000 {
				clock-frequency = <100000>;

				eeprom@50 {
					compatible = "at,24c256";
					reg = <0x50>;
				};

				eeprom@57 {
					compatible = "at,24c64";
					reg = <0x57>;
				};

				uda1380: uda1380@18 {
					compatible = "nxp,uda1380";
					reg = <0x18>;
					power-gpio = <&gpio 0x59 0>;
					reset-gpio = <&gpio 0x51 0>;
					dac-clk = "wspll";
				};

				pca9532: pca9532@60 {
					compatible = "nxp,pca9532";
					gpio-controller;
					#gpio-cells = <2>;
					reg = <0x60>;
				};
			};

			i2c2: i2c@400A8000 {
				clock-frequency = <100000>;
			};

			sd@20098000 {
				wp-gpios = <&pca9532 5 0>;
				cd-gpios = <&pca9532 4 0>;
				cd-inverted;
				bus-width = <4>;
				status = "okay";
			};
		};

		fab {
			uart1: serial@40014000 {
				status = "okay";
			};

			/* 3-axis accelerometer X,Y,Z (or AD-IN instead of Z) */
			adc@40048000 {
				status = "okay";
			};
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;
		button@21 {
			label = "Interrupt Key";
			linux,code = <103>;
			gpios = <&gpio 4 1 0>; /* GPI_P3 1 */
		};
		key1 {
			label = "KEY1";
			linux,code = <1>;
			gpios = <&pca9532 0 0>;
		};
		key2 {
			label = "KEY2";
			linux,code = <2>;
			gpios = <&pca9532 1 0>;
		};
		key3 {
			label = "KEY3";
			linux,code = <3>;
			gpios = <&pca9532 2 0>;
		};
		key4 {
			label = "KEY4";
			linux,code = <4>;
			gpios = <&pca9532 3 0>;
		};
		joy0 {
			label = "Joystick Key 0";
			linux,code = <10>;
			gpios = <&gpio 2 0 0>; /* P2.0 */
		};
		joy1 {
			label = "Joystick Key 1";
			linux,code = <11>;
			gpios = <&gpio 2 1 0>; /* P2.1 */
		};
		joy2 {
			label = "Joystick Key 2";
			linux,code = <12>;
			gpios = <&gpio 2 2 0>; /* P2.2 */
		};
		joy3 {
			label = "Joystick Key 3";
			linux,code = <13>;
			gpios = <&gpio 2 3 0>; /* P2.3 */
		};
		joy4 {
			label = "Joystick Key 4";
			linux,code = <14>;
			gpios = <&gpio 2 4 0>; /* P2.4 */
		};
	};

	leds {
		compatible = "gpio-leds";

		/* LEDs on OEM Board */

		led1 {
			gpios = <&gpio 5 14 1>; /* GPO_P3 14, GPIO 93, active low */
			linux,default-trigger = "timer";
			default-state = "off";
		};

		led2 {
			gpios = <&gpio 2 10 1>; /* P2.10, active low */
			default-state = "off";
		};

		led3 {
			gpios = <&gpio 2 11 1>; /* P2.11, active low */
			default-state = "off";
		};

		led4 {
			gpios = <&gpio 2 12 1>; /* P2.12, active low */
			default-state = "off";
		};

		/* LEDs on Base Board */

		lede1 {
			gpios = <&pca9532 8 0>;
			default-state = "off";
		};
		lede2 {
			gpios = <&pca9532 9 0>;
			default-state = "off";
		};
		lede3 {
			gpios = <&pca9532 10 0>;
			default-state = "off";
		};
		lede4 {
			gpios = <&pca9532 11 0>;
			default-state = "off";
		};
		lede5 {
			gpios = <&pca9532 12 0>;
			default-state = "off";
		};
		lede6 {
			gpios = <&pca9532 13 0>;
			default-state = "off";
		};
		lede7 {
			gpios = <&pca9532 14 0>;
			default-state = "off";
		};
		lede8 {
			gpios = <&pca9532 15 0>;
			default-state = "off";
		};
	};
};

/* Here, choose exactly one from: ohci, usbd */
&ohci /* &usbd */ {
	transceiver = <&isp1301>;
	status = "okay";
};

&i2cusb {
	clock-frequency = <100000>;

	isp1301: usb-transceiver@2d {
		compatible = "nxp,isp1301";
		reg = <0x2d>;
	};
};
