Merge branch 'master' of git://git.denx.de/u-boot-samsung
diff --git a/arch/arm/dts/exynos4.dtsi b/arch/arm/dts/exynos4.dtsi
index a5a00c8..53d39dc 100644
--- a/arch/arm/dts/exynos4.dtsi
+++ b/arch/arm/dts/exynos4.dtsi
@@ -122,44 +122,49 @@
 		interrupts = <7 63 0>;
 	};
 
-	sdhci@12510000 {
+	sdhci0: sdhci@12510000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		compatible = "samsung,exynos-mmc";
+		compatible = "samsung,exynos4412-sdhci";
 		reg = <0x12510000 0x1000>;
 		interrupts = <0 75 0>;
+		status = "disabled";
 	};
 
-	sdhci@12520000 {
+	sdhci1: sdhci@12520000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		compatible = "samsung,exynos-mmc";
+		compatible = "samsung,exynos4412-sdhci";
 		reg = <0x12520000 0x1000>;
 		interrupts = <0 76 0>;
+		status = "disabled";
 	};
 
-	sdhci@12530000 {
+	sdhci2: sdhci@12530000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		compatible = "samsung,exynos-mmc";
+		compatible = "samsung,exynos4412-sdhci";
 		reg = <0x12530000 0x1000>;
 		interrupts = <0 77 0>;
+		status = "disabled";
 	};
 
-	sdhci@12540000 {
+	sdhci3: sdhci@12540000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		compatible = "samsung,exynos-mmc";
+		compatible = "samsung,exynos4412-sdhci";
 		reg = <0x12540000 0x1000>;
 		interrupts = <0 78 0>;
+		status = "disabled";
 	};
 
-	dwmmc@12550000 {
+	mshc_0: dwmmc@12550000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		compatible = "samsung,exynos-dwmmc";
+		compatible = "samsung,exynos4412-dw-mshc";
 		reg = <0x12550000 0x1000>;
 		interrupts = <0 131 0>;
+		status = "disabled";
 	};
 
 };
diff --git a/arch/arm/dts/exynos4210-origen.dts b/arch/arm/dts/exynos4210-origen.dts
index 26c4d7f..a13d033 100644
--- a/arch/arm/dts/exynos4210-origen.dts
+++ b/arch/arm/dts/exynos4210-origen.dts
@@ -22,24 +22,12 @@
 	aliases {
 		serial0 = "/serial@13800000";
 		console = "/serial@13820000";
-		mmc2 = "/sdhci@12530000";
 	};
+};
 
-	sdhci@12510000 {
-		status = "disabled";
-	};
-
-	sdhci@12520000 {
-		status = "disabled";
-	};
-
-	sdhci@12530000 {
-		samsung,bus-width = <4>;
-		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpk2 2 0>;
-	};
-
-	sdhci@12540000 {
-		status = "disabled";
-	};
+&sdhci2 {
+	samsung,bus-width = <4>;
+	samsung,timing = <1 2 3>;
+	cd-gpios = <&gpk2 2 0>;
+	status = "okay";
 };
diff --git a/arch/arm/dts/exynos4210-trats.dts b/arch/arm/dts/exynos4210-trats.dts
index ac422e4..2abe3e9 100644
--- a/arch/arm/dts/exynos4210-trats.dts
+++ b/arch/arm/dts/exynos4210-trats.dts
@@ -21,8 +21,6 @@
 	aliases {
 		serial0 = "/serial@13800000";
 		console = "/serial@13820000";
-		mmc0 = "/sdhci@12510000";
-		mmc2 = "/sdhci@12530000";
 		i2c8 = &i2c_fg;
 	};
 
@@ -91,30 +89,6 @@
 		samsung,dsim-device-reverse-panel = <1>;
 	};
 
-	sdhci@12510000 {
-		samsung,bus-width = <8>;
-		samsung,timing = <1 3 3>;
-		pwr-gpios = <&gpk0 2 0>;
-	};
-
-	sdhci@12520000 {
-		status = "disabled";
-	};
-
-	sdhci@12530000 {
-		samsung,bus-width = <4>;
-		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpx3 4 0>;
-	};
-
-	sdhci@12540000 {
-		status = "disabled";
-	};
-
-	dwmmc@12550000 {
-		status = "disabled";
-	};
-
 	i2c_fg: fuel-gauge {
 		compatible = "i2c-gpio";
 		gpios = <&gpy4 1 0>,	/* sda */
@@ -265,3 +239,17 @@
 		};
 	};
 };
+
+&sdhci0 {
+	samsung,bus-width = <8>;
+	samsung,timing = <1 3 3>;
+	pwr-gpios = <&gpk0 2 0>;
+	status = "okay";
+};
+
+&sdhci2 {
+	samsung,bus-width = <4>;
+	samsung,timing = <1 2 3>;
+	cd-gpios = <&gpx3 4 0>;
+	status = "okay";
+};
diff --git a/arch/arm/dts/exynos4210-universal_c210.dts b/arch/arm/dts/exynos4210-universal_c210.dts
index 5763627..d8ce0e3 100644
--- a/arch/arm/dts/exynos4210-universal_c210.dts
+++ b/arch/arm/dts/exynos4210-universal_c210.dts
@@ -17,30 +17,8 @@
 	aliases {
 		serial0 = "/serial@13800000";
 		console = "/serial@13820000";
-		mmc0 = "/sdhci@12510000";
-		mmc2 = "/sdhci@12530000";
 	};
 
-	sdhci@12510000 {
-		samsung,bus-width = <8>;
-		samsung,timing = <1 3 3>;
-		pwr-gpios = <&gpk0 2 0>;
-	};
-
-	sdhci@12520000 {
-		status = "disabled";
-	};
-
-	sdhci@12530000 {
-		samsung,bus-width = <4>;
-		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpx3 4 0>;
-	};
-
-	sdhci@12540000 {
-		status = "disabled";
-	};
-
 	soft-spi {
 		compatible = "spi-gpio";
 		cs-gpios = <&gpy4 3 0>;
@@ -258,3 +236,17 @@
 		};
 	};
 };
+
+&sdhci0 {
+	samsung,bus-width = <8>;
+	samsung,timing = <1 3 3>;
+	pwr-gpios = <&gpk0 2 0>;
+	status = "okay";
+};
+
+&sdhci2 {
+	samsung,bus-width = <4>;
+	samsung,timing = <1 2 3>;
+	cd-gpios = <&gpx3 4 0>;
+	status = "okay";
+};
diff --git a/arch/arm/dts/exynos4412-odroid.dts b/arch/arm/dts/exynos4412-odroid.dts
index 8710747..ecfd5d1 100644
--- a/arch/arm/dts/exynos4412-odroid.dts
+++ b/arch/arm/dts/exynos4412-odroid.dts
@@ -25,8 +25,8 @@
 		i2c7 = "/i2c@138d0000";
 		serial0 = "/serial@13800000";
 		console = "/serial@13810000";
-		mmc2 = "/sdhci@12530000";
-		mmc4 = "/dwmmc@12550000";
+		mmc0 = &mshc_0;
+		mmc1 = &sdhci2;
 	};
 
 	i2c@13860000 {
@@ -224,34 +224,6 @@
 		status = "okay";
 	};
 
-	sdhci@12510000 {
-		status = "disabled";
-	};
-
-	sdhci@12520000 {
-		status = "disabled";
-	};
-
-	sdhci@12530000 {
-		samsung,bus-width = <4>;
-		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpk2 2 0>;
-	};
-
-	sdhci@12540000 {
-		status = "disabled";
-	};
-
-	dwmmc@12550000 {
-		samsung,bus-width = <8>;
-		samsung,timing = <2 1 0>;
-		samsung,removable = <0>;
-		fifoth_val = <0x203f0040>;
-		bus_hz = <400000000>;
-		div = <0x3>;
-		index = <4>;
-	};
-
 	ehci@12580000 {
 		compatible = "samsung,exynos-ehci";
 		reg = <0x12580000 0x100>;
@@ -268,3 +240,21 @@
 		reset-gpio = <&gpk1 2 0>;
 	};
 };
+
+&sdhci2 {
+	samsung,bus-width = <4>;
+	samsung,timing = <1 2 3>;
+	cd-gpios = <&gpk2 2 0>;
+	status = "okay";
+};
+
+&mshc_0 {
+	samsung,bus-width = <8>;
+	samsung,timing = <2 1 0>;
+	samsung,removable = <0>;
+	fifoth_val = <0x203f0040>;
+	bus_hz = <400000000>;
+	div = <0x3>;
+	index = <4>;
+	status = "okay";
+};
diff --git a/arch/arm/dts/exynos4412-trats2.dts b/arch/arm/dts/exynos4412-trats2.dts
index fd9e48c..0938e79 100644
--- a/arch/arm/dts/exynos4412-trats2.dts
+++ b/arch/arm/dts/exynos4412-trats2.dts
@@ -31,9 +31,8 @@
 		i2c9 = &i2c_max77693;
 		serial0 = "/serial@13800000";
 		console = "/serial@13820000";
-		mmc0 = "/sdhci@12510000";
-		mmc2 = "/sdhci@12530000";
-		mshc0 = "/dwmmc@12550000";
+		mmc0 = &mshc_0;
+		mmc1 = &sdhci2;
 	};
 
 	i2c_fg: fuel-gauge {
@@ -437,28 +436,30 @@
 		pwr-gpios = <&gpk0 4 0>;
 		status = "disabled";
 	};
+};
 
-	sdhci@12520000 {
-		status = "disabled";
-	};
+&sdhci0 {
+	samsung,bus-width = <8>;
+	samsung,timing = <1 3 3>;
+	pwr-gpios = <&gpk0 4 0>;
+	status = "disabled";
+};
 
-	sdhci@12530000 {
-		samsung,bus-width = <4>;
-		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpk2 2 0>;
-	};
+&sdhci2 {
+	samsung,bus-width = <4>;
+	samsung,timing = <1 2 3>;
+	cd-gpios = <&gpk2 2 0>;
+	status = "okay";
+};
 
-	sdhci@12540000 {
-		status = "disabled";
-	};
-
-	dwmmc@12550000 {
-		samsung,bus-width = <8>;
-		samsung,timing = <2 1 0>;
-		pwr-gpios = <&gpk0 4 0>;
-		fifoth_val = <0x203f0040>;
-		bus_hz = <400000000>;
-		div = <0x3>;
-		index = <4>;
-	};
+&mshc_0 {
+	samsung,bus-width = <8>;
+	samsung,timing = <2 1 0>;
+	samsung,removable = <0>;
+	fifoth_val = <0x203f0040>;
+	bus_hz = <400000000>;
+	div = <0x3>;
+	index = <4>;
+	fifo-depth = <0x80>;
+	status = "okay";
 };
diff --git a/arch/arm/dts/exynos4x12.dtsi b/arch/arm/dts/exynos4x12.dtsi
index 5d58c6e..b977288 100644
--- a/arch/arm/dts/exynos4x12.dtsi
+++ b/arch/arm/dts/exynos4x12.dtsi
@@ -27,7 +27,6 @@
 		pinctrl1 = &pinctrl_1;
 		pinctrl2 = &pinctrl_2;
 		pinctrl3 = &pinctrl_3;
-		mshc0 = &mshc_0;
 	};
 
 	pd_isp: isp-power-domain@10023CA0 {
@@ -100,16 +99,4 @@
 		clock-names = "sclk_fimg2d", "fimg2d";
 		status = "disabled";
 	};
-
-	mshc_0: mmc@12550000 {
-		compatible = "samsung,exynos4412-dw-mshc";
-		reg = <0x12550000 0x1000>;
-		interrupts = <0 77 0>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		fifo-depth = <0x80>;
-		clocks = <&clock 301>, <&clock 149>;
-		clock-names = "biu", "ciu";
-		status = "disabled";
-	};
 };
diff --git a/arch/arm/dts/exynos5422-odroidxu3.dts b/arch/arm/dts/exynos5422-odroidxu3.dts
index 690c747..b6f4333 100644
--- a/arch/arm/dts/exynos5422-odroidxu3.dts
+++ b/arch/arm/dts/exynos5422-odroidxu3.dts
@@ -40,6 +40,215 @@
 		s2mps11_pmic@66 {
 			compatible = "samsung,s2mps11-pmic";
 			reg = <0x66>;
+			voltage-regulators {
+				ldo1_reg: LDO1 {
+					regulator-name = "vdd_ldo1";
+					regulator-min-microvolt = <1000000>;
+					regulator-max-microvolt = <1000000>;
+					regulator-always-on;
+				};
+
+				ldo3_reg: LDO3 {
+					regulator-name = "vddq_mmc0";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+
+				ldo4_reg: LDO4 {
+					regulator-name = "vdd_adc";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+
+				ldo5_reg: LDO5 {
+					regulator-name = "vdd_ldo5";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-always-on;
+				};
+
+				ldo6_reg: LDO6 {
+					regulator-name = "vdd_ldo6";
+					regulator-min-microvolt = <1000000>;
+					regulator-max-microvolt = <1000000>;
+					regulator-always-on;
+				};
+
+				ldo7_reg: LDO7 {
+					regulator-name = "vdd_ldo7";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-always-on;
+				};
+
+				ldo8_reg: LDO8 {
+					regulator-name = "vdd_ldo8";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-always-on;
+				};
+
+				ldo9_reg: LDO9 {
+					regulator-name = "vdd_ldo9";
+					regulator-min-microvolt = <3000000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-always-on;
+				};
+
+				ldo10_reg: LDO10 {
+					regulator-name = "vdd_ldo10";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-always-on;
+				};
+
+				ldo11_reg: LDO11 {
+					regulator-name = "vdd_ldo11";
+					regulator-min-microvolt = <1000000>;
+					regulator-max-microvolt = <1000000>;
+					regulator-always-on;
+				};
+
+				ldo12_reg: LDO12 {
+					regulator-name = "vdd_ldo12";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+					regulator-always-on;
+				};
+
+				ldo13_reg: LDO13 {
+					regulator-name = "vddq_mmc2";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo15_reg: LDO15 {
+					regulator-name = "vdd_ldo15";
+					regulator-min-microvolt = <3100000>;
+					regulator-max-microvolt = <3100000>;
+					regulator-always-on;
+				};
+
+				ldo16_reg: LDO16 {
+					regulator-name = "vdd_ldo16";
+					regulator-min-microvolt = <2200000>;
+					regulator-max-microvolt = <2200000>;
+					regulator-always-on;
+				};
+
+				ldo17_reg: LDO17 {
+					regulator-name = "tsp_avdd";
+					regulator-min-microvolt = <3300000>;
+					regulator-max-microvolt = <3300000>;
+					regulator-always-on;
+				};
+
+				ldo18_reg: LDO18 {
+					regulator-name = "vdd_emmc_1V8";
+					regulator-min-microvolt = <1800000>;
+					regulator-max-microvolt = <1800000>;
+				};
+
+				ldo19_reg: LDO19 {
+					regulator-name = "vdd_sd";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+				};
+
+				ldo24_reg: LDO24 {
+					regulator-name = "tsp_io";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <2800000>;
+					regulator-always-on;
+				};
+
+				ldo26_reg: LDO26 {
+					regulator-name = "vdd_ldo26";
+					regulator-min-microvolt = <3000000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-always-on;
+				};
+
+				buck1_reg: BUCK1 {
+					regulator-name = "vdd_mif";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1300000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck2_reg: BUCK2 {
+					regulator-name = "vdd_arm";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1500000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck3_reg: BUCK3 {
+					regulator-name = "vdd_int";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1400000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck4_reg: BUCK4 {
+					regulator-name = "vdd_g3d";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1400000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck5_reg: BUCK5 {
+					regulator-name = "vdd_mem";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1400000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck6_reg: BUCK6 {
+					regulator-name = "vdd_kfc";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1500000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck7_reg: BUCK7 {
+					regulator-name = "vdd_1.0v_ldo";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1500000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck8_reg: BUCK8 {
+					regulator-name = "vdd_1.8v_ldo";
+					regulator-min-microvolt = <800000>;
+					regulator-max-microvolt = <1500000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck9_reg: BUCK9 {
+					regulator-name = "vdd_2.8v_ldo";
+					regulator-min-microvolt = <3000000>;
+					regulator-max-microvolt = <3750000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+
+				buck10_reg: BUCK10 {
+					regulator-name = "vdd_vmem";
+					regulator-min-microvolt = <2850000>;
+					regulator-max-microvolt = <2850000>;
+					regulator-always-on;
+					regulator-boot-on;
+				};
+			};
 		};
 	};
 
diff --git a/configs/odroid-xu3_defconfig b/configs/odroid-xu3_defconfig
index fed24ec..d040af3 100644
--- a/configs/odroid-xu3_defconfig
+++ b/configs/odroid-xu3_defconfig
@@ -25,7 +25,7 @@
 CONFIG_ADC=y
 CONFIG_ADC_EXYNOS=y
 CONFIG_DFU_MMC=y
-CONFIG_DM_I2C_COMPAT=y
+CONFIG_SYS_I2C_S3C24X0=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
diff --git a/configs/odroid_defconfig b/configs/odroid_defconfig
index f4e9e9a..22e86e2 100644
--- a/configs/odroid_defconfig
+++ b/configs/odroid_defconfig
@@ -38,7 +38,8 @@
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_DFU_MMC=y
-CONFIG_DM_I2C_COMPAT=y
+CONFIG_SYS_I2C_S3C24X0=y
+CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
diff --git a/configs/origen_defconfig b/configs/origen_defconfig
index dfb08fb..573c9e2 100644
--- a/configs/origen_defconfig
+++ b/configs/origen_defconfig
@@ -32,6 +32,7 @@
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_DFU_MMC=y
+CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
diff --git a/configs/s5pc210_universal_defconfig b/configs/s5pc210_universal_defconfig
index c342fa9..021e6c5 100644
--- a/configs/s5pc210_universal_defconfig
+++ b/configs/s5pc210_universal_defconfig
@@ -33,6 +33,7 @@
 CONFIG_OF_CONTROL=y
 CONFIG_DFU_MMC=y
 CONFIG_SYS_I2C_S3C24X0=y
+CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
diff --git a/configs/trats2_defconfig b/configs/trats2_defconfig
index 8c92f2f..16ac27f 100644
--- a/configs/trats2_defconfig
+++ b/configs/trats2_defconfig
@@ -37,6 +37,7 @@
 CONFIG_DFU_MMC=y
 CONFIG_DM_I2C_GPIO=y
 CONFIG_SYS_I2C_S3C24X0=y
+CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index 09797c3..0f2445b 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -36,6 +36,7 @@
 CONFIG_DFU_MMC=y
 CONFIG_DM_I2C_GPIO=y
 CONFIG_SYS_I2C_S3C24X0=y
+CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
diff --git a/include/configs/odroid.h b/include/configs/odroid.h
index afc7c5e..609a3d1 100644
--- a/include/configs/odroid.h
+++ b/include/configs/odroid.h
@@ -175,11 +175,6 @@
 	"scriptaddr=0x42000000\0" \
 	"fdtaddr=40800000\0"
 
-/* I2C */
-#define CONFIG_SYS_I2C_S3C24X0
-#define CONFIG_SYS_I2C_S3C24X0_SPEED	100000
-#define CONFIG_SYS_I2C_S3C24X0_SLAVE	0
-
 /* GPT */
 #define CONFIG_RANDOM_UUID