/*
 * SAMSUNG SMDK5420 board device tree source
 *
 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.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
 * published by the Free Software Foundation.
*/

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

/ {
	model = "Samsung SMDK5420 board based on EXYNOS5420";
	compatible = "samsung,smdk5420", "samsung,exynos5420";

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

	chosen {
		bootargs = "console=ttySAC2,115200 init=/linuxrc";
	};

	fixed-rate-clocks {
		oscclk {
			compatible = "samsung,exynos5420-oscclk";
			clock-frequency = <24000000>;
		};
	};

	dp-controller@145B0000 {
		pinctrl-names = "default";
		pinctrl-0 = <&dp_hpd>;
		samsung,color-space = <0>;
		samsung,dynamic-range = <0>;
		samsung,ycbcr-coeff = <0>;
		samsung,color-depth = <1>;
		samsung,link-rate = <0x0a>;
		samsung,lane-count = <4>;
		status = "okay";
	};

	fimd@14400000 {
		status = "okay";
		display-timings {
			native-mode = <&timing0>;
			timing0: timing@0 {
				clock-frequency = <50000>;
				hactive = <2560>;
				vactive = <1600>;
				hfront-porch = <48>;
				hback-porch = <80>;
				hsync-len = <32>;
				vback-porch = <16>;
				vfront-porch = <8>;
				vsync-len = <6>;
			};
		};
	};

	pinctrl@13400000 {
		hdmi_hpd_irq: hdmi-hpd-irq {
			samsung,pins = "gpx3-7";
			samsung,pin-function = <0>;
			samsung,pin-pud = <1>;
			samsung,pin-drv = <0>;
		};
	};

	hdmi@14530000 {
		status = "okay";
		hpd-gpio = <&gpx3 7 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&hdmi_hpd_irq>;
	};

	i2c_2: i2c@12C80000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-max-bus-freq = <66000>;
		status = "okay";

		hdmiddc@50 {
			compatible = "samsung,exynos4210-hdmiddc";
			reg = <0x50>;
		};
	};
};
