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

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

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

	sdhci@12530000 {
		samsung,sdhci-bus-width = <4>;
		linux,mmc_cap_4_bit_data;
		samsung,sdhci-cd-internal;
		gpio-cd = <&gpk2 2 2 3 3>;
		gpios = <&gpk2 0 2 0 3>,
			<&gpk2 1 2 0 3>,
			<&gpk2 3 2 3 3>,
			<&gpk2 4 2 3 3>,
			<&gpk2 5 2 3 3>,
			<&gpk2 6 2 3 3>;
		status = "okay";
	};

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

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

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

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

	keypad@100A0000 {
		samsung,keypad-num-rows = <2>;
		samsung,keypad-num-columns = <8>;
		linux,keypad-no-autorepeat;
		linux,keypad-wakeup;
		status = "okay";

		row-gpios = <&gpx2 0 3 3 0>,
			    <&gpx2 1 3 3 0>;

		col-gpios = <&gpx1 0 3 0 0>,
			    <&gpx1 1 3 0 0>,
			    <&gpx1 2 3 0 0>,
			    <&gpx1 3 3 0 0>,
			    <&gpx1 4 3 0 0>,
			    <&gpx1 5 3 0 0>,
			    <&gpx1 6 3 0 0>,
			    <&gpx1 7 3 0 0>;

		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 = <20000>;
		gpios = <&gpd1 0 2 3 0>,
			<&gpd1 1 2 3 0>;
		status = "okay";

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

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

	spi_2: spi@13940000 {
		gpios = <&gpc1 1 5 3 0>,
			<&gpc1 3 5 3 0>,
			<&gpc1 4 5 3 0>;
		status = "okay";

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

			controller-data {
				cs-gpio = <&gpc1 2 1 0 3>;
				samsung,spi-feedback-delay = <0>;
			};

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

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