/*
 * SAMSUNG SMDK5250 board device tree source
 *
 * Copyright (c) 2012 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/ "exynos5250.dtsi"

/ {
	model = "SAMSUNG SMDK5250 board based on EXYNOS5250";
	compatible = "samsung,smdk5250", "samsung,exynos5250";

	aliases {
		mshc0 = &dwmmc_0;
		mshc1 = &dwmmc_1;
		mshc2 = &dwmmc_2;
		mshc3 = &dwmmc_3;
	};

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

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

	i2c@12C60000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-max-bus-freq = <20000>;
		gpios = <&gpb3 0 2 3 0>,
			<&gpb3 1 2 3 0>;

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

	i2c@12C70000 {
		samsung,i2c-sda-delay = <100>;
		samsung,i2c-max-bus-freq = <20000>;
		gpios = <&gpb3 2 2 3 0>,
			<&gpb3 3 2 3 0>;

		eeprom@51 {
			compatible = "samsung,s524ad0xd1";
			reg = <0x51>;
		};
	};

	i2c@12C80000 {
		status = "disabled";
	};

	i2c@12C90000 {
		status = "disabled";
	};

	i2c@12CA0000 {
		status = "disabled";
	};

	i2c@12CB0000 {
		status = "disabled";
	};

	i2c@12CC0000 {
		status = "disabled";
	};

	i2c@12CD0000 {
		status = "disabled";
	};

	dwmmc_0: dwmmc0@12200000 {
		num-slots = <1>;
		supports-highspeed;
		broken-cd;
		fifo-depth = <0x80>;
		card-detect-delay = <200>;
		samsung,dw-mshc-ciu-div = <3>;
		samsung,dw-mshc-sdr-timing = <2 3 3>;
		samsung,dw-mshc-ddr-timing = <1 2 3>;

		slot@0 {
			reg = <0>;
			bus-width = <8>;
			gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
				<&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
				<&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
				<&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
				<&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
		};
	};

	dwmmc_1: dwmmc1@12210000 {
		status = "disabled";
	};

	dwmmc_2: dwmmc2@12220000 {
		num-slots = <1>;
		supports-highspeed;
		fifo-depth = <0x80>;
		card-detect-delay = <200>;
		samsung,dw-mshc-ciu-div = <3>;
		samsung,dw-mshc-sdr-timing = <2 3 3>;
		samsung,dw-mshc-ddr-timing = <1 2 3>;

		slot@0 {
			reg = <0>;
			bus-width = <4>;
			samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>;
			gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
				<&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
				<&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>,
				<&gpc4 3 3 3 3>, <&gpc4 3 3 3 3>,
				<&gpc4 5 3 3 3>, <&gpc4 6 3 3 3>;
		};
	};

	dwmmc_3: dwmmc3@12230000 {
		status = "disabled";
	};

	spi_0: spi@12d20000 {
		status = "disabled";
	};

	spi_1: spi@12d30000 {
		gpios = <&gpa2 4 2 3 0>,
			<&gpa2 6 2 3 0>,
			<&gpa2 7 2 3 0>;

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

			controller-data {
				cs-gpio = <&gpa2 5 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>;
			};
		};
	};

	spi_2: spi@12d40000 {
		status = "disabled";
	};
};
