/*
 * Samsung's Exynos4210 based SMDKV310 board device tree source
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2010-2011 Linaro Ltd.
 *		www.linaro.org
 *
 * Device tree source file for Samsung's SMDKV310 board which is based on
 * Samsung's Exynos4210 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 "exynos4210.dtsi"

/ {
	model = "Samsung smdkv310 evaluation board based on Exynos4210";
	compatible = "samsung,smdkv310", "samsung,exynos4210", "samsung,exynos4";

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

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

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

	g2d@12800000 {
		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";
	};

	pinctrl@11000000 {
		keypad_rows: keypad-rows {
			samsung,pins = "gpx2-0", "gpx2-1";
			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 = <2>;
		samsung,keypad-num-columns = <8>;
		linux,keypad-no-autorepeat;
		linux,keypad-wakeup;
		pinctrl-names = "default";
		pinctrl-0 = <&keypad_rows &keypad_cols>;
		status = "okay";

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

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

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

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

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

		key_a {
			keypad,row = <1>;
			keypad,column = <3>;
			linux,code = <30>;
		};

		key_b {
			keypad,row = <1>;
			keypad,column = <4>;
			linux,code = <48>;
		};

		key_c {
			keypad,row = <1>;
			keypad,column = <5>;
			linux,code = <46>;
		};

		key_d {
			keypad,row = <1>;
			keypad,column = <6>;
			linux,code = <32>;
		};

		key_e {
			keypad,row = <1>;
			keypad,column = <7>;
			linux,code = <18>;
		};
	};

	i2c@13860000 {
		#address-cells = <1>;
		#size-cells = <0>;
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-max-bus-freq = <100000>;
		status = "okay";

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

		eeprom@52 {
			compatible = "samsung,24ad0xd1";
			reg = <0x52>;
		};
	};

	spi_2: spi@13940000 {
		cs-gpios = <&gpc1 2 0>;
		status = "okay";

		w25x80@0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "w25x80";
			reg = <0>;
			spi-max-frequency = <1000000>;

			controller-data {
				samsung,spi-feedback-delay = <0>;
			};

			partition@0 {
				label = "U-Boot";
				reg = <0x0 0x40000>;
				read-only;
			};

			partition@40000 {
				label = "Kernel";
				reg = <0x40000 0xc0000>;
			};
		};
	};

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

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