/*
 * SAMSUNG SMDK5410 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 "exynos5410.dtsi"
#include <dt-bindings/interrupt-controller/irq.h>
/ {
	model = "Samsung SMDK5410 board based on EXYNOS5410";
	compatible = "samsung,smdk5410", "samsung,exynos5410", "samsung,exynos5";

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

	chosen {
		bootargs = "console=ttySAC2,115200";
	};

	fin_pll: xxti {
		compatible = "fixed-clock";
		clock-frequency = <24000000>;
		clock-output-names = "fin_pll";
		#clock-cells = <0>;
	};

	firmware@02037000 {
		compatible = "samsung,secure-firmware";
		reg = <0x02037000 0x1000>;
	};

};

&mmc_0 {
	status = "okay";
	num-slots = <1>;
	cap-mmc-highspeed;
	broken-cd;
	card-detect-delay = <200>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <2 3>;
	samsung,dw-mshc-ddr-timing = <1 2>;
	bus-width = <8>;
};

&mmc_2 {
	status = "okay";
	num-slots = <1>;
	cap-sd-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>;
	bus-width = <4>;
	disable-wp;
};

&pinctrl_0 {
	srom_ctl: srom-ctl {
		samsung,pins = "gpy0-3", "gpy0-4", "gpy0-5",
			       "gpy1-0", "gpy1-1", "gpy1-2", "gpy1-3";
		samsung,pin-function = <2>;
		samsung,pin-drv = <0>;
	};

	srom_ebi: srom-ebi {
		samsung,pins = "gpy3-0", "gpy3-1", "gpy3-2", "gpy3-3",
			       "gpy3-4", "gpy3-5", "gpy3-6", "gpy3-7",
			       "gpy5-0", "gpy5-1", "gpy5-2", "gpy5-3",
			       "gpy5-4", "gpy5-5", "gpy5-6", "gpy5-7",
			       "gpy6-0", "gpy6-1", "gpy6-2", "gpy6-3",
			       "gpy6-4", "gpy6-5", "gpy6-6", "gpy6-7";
		samsung,pin-function = <2>;
		samsung,pin-pud = <3>;
		samsung,pin-drv = <0>;
	};
};

&sromc {
	pinctrl-names = "default";
	pinctrl-0 = <&srom_ctl>, <&srom_ebi>;

	ethernet@3,0 {
		compatible = "smsc,lan9115";
		reg = <3 0 0x10000>;
		phy-mode = "mii";
		interrupt-parent = <&gpx0>;
		interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
		reg-io-width = <2>;
		smsc,irq-push-pull;
		smsc,force-internal-phy;

		samsung,srom-page-mode;
		samsung,srom-timing = <9 12 1 9 1 1>;
	};
};

&uart0 {
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart2 {
	status = "okay";
};
