/*
 * Device Tree Source for the KZM9D board
 *
 * Copyright (C) 2013 Renesas Solutions Corp.
 *
 * This file is licensed under the terms of the GNU General Public License
 * version 2.  This program is licensed "as is" without any warranty of any
 * kind, whether express or implied.
 */
/dts-v1/;

#include "emev2.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	model = "EMEV2 KZM9D Board";
	compatible = "renesas,kzm9d", "renesas,emev2";

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x8000000>;
	};

	aliases {
		serial1 = &uart1;
	};

	chosen {
		bootargs = "ignore_loglevel root=/dev/nfs ip=dhcp";
		stdout-path = "serial1:115200n8";
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		one {
			debounce_interval = <50>;
			wakeup-source;
			label = "DSW2-1";
			linux,code = <KEY_1>;
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		};
		two {
			debounce_interval = <50>;
			wakeup-source;
			label = "DSW2-2";
			linux,code = <KEY_2>;
			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
		};
		three {
			debounce_interval = <50>;
			wakeup-source;
			label = "DSW2-3";
			linux,code = <KEY_3>;
			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
		};
		four {
			debounce_interval = <50>;
			wakeup-source;
			label = "DSW2-4";
			linux,code = <KEY_4>;
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
		};
	};

	reg_1p8v: regulator-1p8v {
		compatible = "regulator-fixed";
		regulator-name = "fixed-1.8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
		regulator-boot-on;
	};

	reg_3p3v: regulator-3p3v {
		compatible = "regulator-fixed";
		regulator-name = "fixed-3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
	};

	ethernet@20000000 {
		compatible = "smsc,lan9220", "smsc,lan9115";
		reg = <0x20000000 0x10000>;
		phy-mode = "mii";
		interrupt-parent = <&gpio0>;
		interrupts = <1 IRQ_TYPE_EDGE_RISING>;
		reg-io-width = <4>;
		smsc,irq-active-high;
		smsc,irq-push-pull;
		vddvario-supply = <&reg_1p8v>;
		vdd33a-supply = <&reg_3p3v>;
	};
};

&iic0 {
	status = "okay";
};

&iic1 {
	status = "okay";
};

&pfc {
	uart1_pins: uart1 {
		groups = "uart1_ctrl", "uart1_data";
		function = "uart1";
	};
};

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