/*
 * 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@40000000 {
		device_type = "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";
	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";
	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 = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
	};

	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 = <EXYNOS_PIN_FUNC_2>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
	};
};

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

&serial_0 {
	status = "okay";
};

&serial_1 {
	status = "okay";
};

&serial_2 {
	status = "okay";
};
