diff --git a/arch/arm/dts/exynos4210-pinctrl-uboot.dtsi b/arch/arm/dts/exynos4210-pinctrl-uboot.dtsi
index ee071c162f623a059fa1b2f93ccc35031ec234e1..f9b61ba8e8fe525e57e4ca985afd9b540390d04d 100644
--- a/arch/arm/dts/exynos4210-pinctrl-uboot.dtsi
+++ b/arch/arm/dts/exynos4210-pinctrl-uboot.dtsi
@@ -14,7 +14,7 @@
 	pinctrl_1: pinctrl@11000000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		gpy0: gpy0 {
+		gpx0: gpx0 {
 			reg = <0xc00>;
 		};
 	};
diff --git a/arch/arm/dts/exynos4210-trats.dts b/arch/arm/dts/exynos4210-trats.dts
index 81188bca13b429a8c761db4020c2d507fbeb1078..8c7a2c3a78792e777ae2b2019ddb8b1eb0e26989 100644
--- a/arch/arm/dts/exynos4210-trats.dts
+++ b/arch/arm/dts/exynos4210-trats.dts
@@ -101,7 +101,7 @@
 	sdhci@12510000 {
 		samsung,bus-width = <8>;
 		samsung,timing = <1 3 3>;
-		pwr-gpios = <&gpio 0xA2 0>;
+		pwr-gpios = <&gpio 146 0>;
 	};
 
 	sdhci@12520000 {
@@ -111,7 +111,7 @@
 	sdhci@12530000 {
 		samsung,bus-width = <4>;
 		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpio 0x39C 0>;
+		cd-gpios = <&gpio 284 0>;
 	};
 
 	sdhci@12540000 {
diff --git a/arch/arm/dts/exynos4210-universal_c210.dts b/arch/arm/dts/exynos4210-universal_c210.dts
index 9139810b1a924e7fab07b306f5c121103ff90c4a..808c3f7cc3a2adc0183428fe3f0035169794aa85 100644
--- a/arch/arm/dts/exynos4210-universal_c210.dts
+++ b/arch/arm/dts/exynos4210-universal_c210.dts
@@ -24,7 +24,7 @@
 	sdhci@12510000 {
 		samsung,bus-width = <8>;
 		samsung,timing = <1 3 3>;
-		pwr-gpios = <&gpio 0xA2 0>;
+		pwr-gpios = <&gpio 146 0>;
 	};
 
 	sdhci@12520000 {
@@ -34,7 +34,7 @@
 	sdhci@12530000 {
 		samsung,bus-width = <4>;
 		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpio 0x39C 0>;
+		cd-gpios = <&gpio 284 0>;
 	};
 
 	sdhci@12540000 {
diff --git a/arch/arm/dts/exynos4412-odroid.dts b/arch/arm/dts/exynos4412-odroid.dts
index 4c5e2b39be5cb51181287e6390872b0016df7f5f..2a1f1dda4e23079a0e8108c9e29418b9eab7272b 100644
--- a/arch/arm/dts/exynos4412-odroid.dts
+++ b/arch/arm/dts/exynos4412-odroid.dts
@@ -8,7 +8,7 @@
  */
 
 /dts-v1/;
-#include "exynos4.dtsi"
+#include "exynos4412.dtsi"
 
 / {
 	model = "Odroid based on Exynos4412";
@@ -51,7 +51,7 @@
 	sdhci@12530000 {
 		samsung,bus-width = <4>;
 		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpio 0xC2 0>;
+		cd-gpios = <&gpio 122 0>;
 	};
 
 	sdhci@12540000 {
diff --git a/arch/arm/dts/exynos4412-trats2.dts b/arch/arm/dts/exynos4412-trats2.dts
index 3b1e4588b54b3cfb9bd0b5c6bcf3424239eb76c8..60e4515a7e7a8833a2c1c62da90bf54fed404a03 100644
--- a/arch/arm/dts/exynos4412-trats2.dts
+++ b/arch/arm/dts/exynos4412-trats2.dts
@@ -416,7 +416,7 @@
 	sdhci@12510000 {
 		samsung,bus-width = <8>;
 		samsung,timing = <1 3 3>;
-		pwr-gpios = <&gpio 0xB2 0>;
+		pwr-gpios = <&gpio 0x6a 0>;
 		status = "disabled";
 	};
 
@@ -427,7 +427,7 @@
 	sdhci@12530000 {
 		samsung,bus-width = <4>;
 		samsung,timing = <1 2 3>;
-		cd-gpios = <&gpio 0x3BC 0>;
+		cd-gpios = <&gpio 0x7a 0>;
 	};
 
 	sdhci@12540000 {
@@ -437,7 +437,7 @@
 	dwmmc@12550000 {
 		samsung,bus-width = <8>;
 		samsung,timing = <2 1 0>;
-		pwr-gpios = <&gpio 0xB2 0>;
+		pwr-gpios = <&gpio 0x6a 0>;
 		fifoth_val = <0x203f0040>;
 		bus_hz = <400000000>;
 		div = <0x3>;
diff --git a/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi b/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
index c02796d2b37e420aea244b4ad75b30ad4d5308e1..c41d07b65fc56abd07b890a369951713d94c5a33 100644
--- a/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
+++ b/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
@@ -9,7 +9,7 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 		gpf0: gpf0 {
-			reg = <0xc180>;
+			reg = <0x180>;
 		};
 		gpj0: gpj0 {
 			reg = <0x240>;
@@ -25,9 +25,6 @@
 		gpm0: gpm0 {
 			reg = <0x260>;
 		};
-		gpy0: gpy0 {
-			reg = <0x120>;
-		};
 		gpx0: gpx0 {
 			reg = <0xc00>;
 		};
diff --git a/arch/arm/dts/exynos4x12-pinctrl.dtsi b/arch/arm/dts/exynos4x12-pinctrl.dtsi
index 93f39983b451f12ab7d64cd8887bbcd550a62f58..23061351ffb26b41119423ee91afa731d9c08ad2 100644
--- a/arch/arm/dts/exynos4x12-pinctrl.dtsi
+++ b/arch/arm/dts/exynos4x12-pinctrl.dtsi
@@ -176,79 +176,79 @@
 			#interrupt-cells = <2>;
 		};
 
-		gpm0: gpm0 {
+		gpy0: gpy0 {
 			gpio-controller;
 			#gpio-cells = <2>;
-
-			interrupt-controller;
-			#interrupt-cells = <2>;
 		};
 
-		gpm1: gpm1 {
+		gpy1: gpy1 {
 			gpio-controller;
 			#gpio-cells = <2>;
-
-			interrupt-controller;
-			#interrupt-cells = <2>;
 		};
 
-		gpm2: gpm2 {
+		gpy2: gpy2 {
 			gpio-controller;
 			#gpio-cells = <2>;
-
-			interrupt-controller;
-			#interrupt-cells = <2>;
 		};
 
-		gpm3: gpm3 {
+		gpy3: gpy3 {
 			gpio-controller;
 			#gpio-cells = <2>;
-
-			interrupt-controller;
-			#interrupt-cells = <2>;
 		};
 
-		gpm4: gpm4 {
+		gpy4: gpy4 {
 			gpio-controller;
 			#gpio-cells = <2>;
-
-			interrupt-controller;
-			#interrupt-cells = <2>;
 		};
 
-		gpy0: gpy0 {
+		gpy5: gpy5 {
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpy1: gpy1 {
+		gpy6: gpy6 {
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpy2: gpy2 {
+		gpm0: gpm0 {
 			gpio-controller;
 			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		gpy3: gpy3 {
+		gpm1: gpm1 {
 			gpio-controller;
 			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		gpy4: gpy4 {
+		gpm2: gpm2 {
 			gpio-controller;
 			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		gpy5: gpy5 {
+		gpm3: gpm3 {
 			gpio-controller;
 			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
-		gpy6: gpy6 {
+		gpm4: gpm4 {
 			gpio-controller;
 			#gpio-cells = <2>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
 		};
 
 		gpx0: gpx0 {
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index 22b08497cb57c1091b1eb82aeed7b58b73c18857..df4671394f668faa8639f3ba8881f94503dd6926 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -328,6 +328,8 @@ void exynos_enable_ldo(unsigned int onoff)
 
 int exynos_init(void)
 {
+	char buf[16];
+
 	gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
 
 	switch (get_hwrev()) {
@@ -352,6 +354,13 @@ int exynos_init(void)
 		break;
 	}
 
+	/* Request soft I2C gpios */
+	sprintf(buf, "soft_i2c_scl");
+	gpio_request(CONFIG_SOFT_I2C_GPIO_SCL, buf);
+
+	sprintf(buf, "soft_i2c_sda");
+	gpio_request(CONFIG_SOFT_I2C_GPIO_SDA, buf);
+
 	check_hw_revision();
 	printf("HW Revision:\t0x%x\n", board_rev);
 
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c
index 0dea45d079f33e9c4f8b3b55288d7f508e4abc2d..a5d34876bbb6d7633f4a8f3dac3c9f21a6b82753 100644
--- a/drivers/mmc/s5p_sdhci.c
+++ b/drivers/mmc/s5p_sdhci.c
@@ -123,7 +123,7 @@ static int do_sdhci_init(struct sdhci_host *host)
 	if (fdt_gpio_isvalid(&host->cd_gpio)) {
 		sprintf(str, "sdhci%d_cd", host->index & 0xf);
 		gpio_request(host->cd_gpio.gpio, str);
-		gpio_direction_output(host->cd_gpio.gpio, 1);
+		gpio_direction_input(host->cd_gpio.gpio);
 		if (gpio_get_value(host->cd_gpio.gpio))
 			return -ENODEV;
 
diff --git a/include/configs/exynos-common.h b/include/configs/exynos-common.h
index 6ba9bb7a1b15252fe56049ee1af3833609dee66e..b258cb93c454c7f44f85f535067a6f042776a5f7 100644
--- a/include/configs/exynos-common.h
+++ b/include/configs/exynos-common.h
@@ -75,6 +75,7 @@
 #define CONFIG_CMD_EXT4_WRITE
 #define CONFIG_CMD_FAT
 #define CONFIG_FAT_WRITE
+#define CONFIG_CMD_FS_GENERIC
 
 #define CONFIG_DOS_PARTITION
 #define CONFIG_EFI_PARTITION