/*
 * Samsung's Exynos4412 based SMDK board device tree source
 *
 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Device tree source file for Samsung's SMDK4412 board which is based on
 * Samsung's Exynos4412 SoC.
 *
 * 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
 * published by the Free Software Foundation.
*/

/dts-v1/;
#include "exynos4412.dtsi"

/ {
	model = "Samsung SMDK evaluation board based on Exynos4412";
	compatible = "samsung,smdk4412", "samsung,exynos4412";

	memory {
		reg = <0x40000000 0x40000000>;
	};

	chosen {
		bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
	};

	g2d@10800000 {
		status = "okay";
	};

	pinctrl@11000000 {
		keypad_rows: keypad-rows {
			samsung,pins = "gpx2-0", "gpx2-1", "gpx2-2";
			samsung,pin-function = <3>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <0>;
		};

		keypad_cols: keypad-cols {
			samsung,pins = "gpx1-0", "gpx1-1", "gpx1-2", "gpx1-3",
				       "gpx1-4", "gpx1-5", "gpx1-6", "gpx1-7";
			samsung,pin-function = <3>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};
	};

	keypad@100A0000 {
		samsung,keypad-num-rows = <3>;
		samsung,keypad-num-columns = <8>;
		linux,keypad-no-autorepeat;
		linux,keypad-wakeup;
		pinctrl-0 = <&keypad_rows &keypad_cols>;
		pinctrl-names = "default";
		status = "okay";

		key_1 {
			keypad,row = <1>;
			keypad,column = <3>;
			linux,code = <2>;
		};

		key_2 {
			keypad,row = <1>;
			keypad,column = <4>;
			linux,code = <3>;
		};

		key_3 {
			keypad,row = <1>;
			keypad,column = <5>;
			linux,code = <4>;
		};

		key_4 {
			keypad,row = <1>;
			keypad,column = <6>;
			linux,code = <5>;
		};

		key_5 {
			keypad,row = <1>;
			keypad,column = <7>;
			linux,code = <6>;
		};

		key_A {
			keypad,row = <2>;
			keypad,column = <6>;
			linux,code = <30>;
		};

		key_B {
			keypad,row = <2>;
			keypad,column = <7>;
			linux,code = <48>;
		};

		key_C {
			keypad,row = <0>;
			keypad,column = <5>;
			linux,code = <46>;
		};

		key_D {
			keypad,row = <2>;
			keypad,column = <5>;
			linux,code = <32>;
		};

		key_E {
			keypad,row = <0>;
			keypad,column = <7>;
			linux,code = <18>;
		};
	};

	sdhci@12530000 {
		bus-width = <4>;
		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
		pinctrl-names = "default";
		status = "okay";
	};

	codec@13400000 {
		samsung,mfc-r = <0x43000000 0x800000>;
		samsung,mfc-l = <0x51000000 0x800000>;
		status = "okay";
	};

	serial@13800000 {
		status = "okay";
	};

	serial@13810000 {
		status = "okay";
	};

	serial@13820000 {
		status = "okay";
	};

	serial@13830000 {
		status = "okay";
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <0>;
		};

		xusbxti {
			compatible = "samsung,clock-xusbxti";
			clock-frequency = <24000000>;
		};
	};
};
