/*
 * 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 = <0 0x4000000>;
	};

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

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

/*
		usbd@31020000 {
			transceiver = <&isp1301>;
			status = "okay";
		};
*/

		/* 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>;
			};

			i2cusb: i2c@31020300 {
				clock-frequency = <100000>;

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

			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";
		};
	};
};
