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

	mmc@12200000 {
		status = "okay";
		broken-cd;
		supports-highspeed;
		card-detect-delay = <200>;
		samsung,dw-mshc-ciu-div = <3>;
		samsung,dw-mshc-sdr-timing = <0 4>;
		samsung,dw-mshc-ddr-timing = <0 2>;
		pinctrl-names = "default";
		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;

		slot@0 {
			reg = <0>;
			bus-width = <8>;
		};
	};

	mmc@12220000 {
		status = "okay";
		supports-highspeed;
		card-detect-delay = <200>;
		samsung,dw-mshc-ciu-div = <3>;
		samsung,dw-mshc-sdr-timing = <2 3>;
		samsung,dw-mshc-ddr-timing = <1 2>;
		pinctrl-names = "default";
		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;

		slot@0 {
			reg = <0>;
			bus-width = <4>;
		};
	};

	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>;
		};
	};
};
