/*
 * Copyright (C) 2013 STMicroelectronics (R&D) Limited.
 * Author: Srinivas Kandagatla <srinivas.kandagatla@st.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * publishhed by the Free Software Foundation.
 */
#include <dt-bindings/input/input.h>
/ {

	memory{
		device_type = "memory";
		reg = <0x60000000 0x40000000>;
	};

	chosen {
		bootargs = "console=ttyAS0,115200 clk_ignore_unused";
		linux,stdout-path = &serial2;
	};

	aliases {
		ttyAS0 = &serial2;
		ethernet0 = &ethernet0;
		ethernet1 = &ethernet1;
	};

	soc {
		serial2: serial@fed32000 {
			status = "okay";
		};

		leds {
			compatible	= "gpio-leds";
			fp_led {
				#gpio-cells = <1>;
				label	= "Front Panel LED";
				gpios	= <&pio105 7>;
				linux,default-trigger	= "heartbeat";
			};
		};

		/* HDMI Tx I2C */
		i2c@fed41000 {
			/* HDMI V1.3a supports Standard mode only */
			clock-frequency = <100000>;
			i2c-min-scl-pulse-width-us = <0>;
			i2c-min-sda-pulse-width-us = <5>;

			status = "okay";
		};

		ethernet0: dwmac@fe810000 {
			status			= "okay";
			phy-mode		= "mii";
			pinctrl-0		= <&pinctrl_mii0>;

			snps,reset-gpio 	= <&pio106 2>;
			snps,reset-active-low;
			snps,reset-delays-us 	= <0 10000 10000>;
		};

		ethernet1: dwmac@fef08000 {
			status			= "disabled";
			phy-mode		= "mii";
			st,tx-retime-src	= "txclk";

			snps,reset-gpio 	= <&pio4 7>;
			snps,reset-active-low;
			snps,reset-delays-us 	= <0 10000 10000>;
		};

		keyscan: keyscan@fe4b0000 {
			keypad,num-rows = <4>;
			keypad,num-columns = <4>;
			st,debounce-us = <5000>;
			linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_F13)
					 MATRIX_KEY(0x00, 0x01, KEY_F9)
					 MATRIX_KEY(0x00, 0x02, KEY_F5)
					 MATRIX_KEY(0x00, 0x03, KEY_F1)
					 MATRIX_KEY(0x01, 0x00, KEY_F14)
					 MATRIX_KEY(0x01, 0x01, KEY_F10)
					 MATRIX_KEY(0x01, 0x02, KEY_F6)
					 MATRIX_KEY(0x01, 0x03, KEY_F2)
					 MATRIX_KEY(0x02, 0x00, KEY_F15)
					 MATRIX_KEY(0x02, 0x01, KEY_F11)
					 MATRIX_KEY(0x02, 0x02, KEY_F7)
					 MATRIX_KEY(0x02, 0x03, KEY_F3)
					 MATRIX_KEY(0x03, 0x00, KEY_F16)
					 MATRIX_KEY(0x03, 0x01, KEY_F12)
					 MATRIX_KEY(0x03, 0x02, KEY_F8)
					 MATRIX_KEY(0x03, 0x03, KEY_F4) >;
		};
	};
};
