[U-Boot] [PATCH] s5p-mmc: Fix ambiguous setting of data transfer width

Chander Kashyap chander.kashyap at linaro.org
Tue Aug 30 12:55:31 CEST 2011


mmc data transfer width is set as following:
WIDE8[5]:
0 = Depend on WIDE4
1 = 8-bit mode
WIDE4[1]:
1 = 4-bit mode
0 = 1-bit mode

In case of 4-bit mode reset 8-bit mode and
in case of 1-bit mode reset 8-bit mode and 4-bit mode

Signed-off-by: Chander Kashyap <chander.kashyap at linaro.org>
---
 drivers/mmc/s5p_mmc.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/s5p_mmc.c b/drivers/mmc/s5p_mmc.c
index 7786ecf..6e6ad08 100644
--- a/drivers/mmc/s5p_mmc.c
+++ b/drivers/mmc/s5p_mmc.c
@@ -368,12 +368,16 @@ static void mmc_set_ios(struct mmc *mmc)
 	 * 1 = 4-bit mode
 	 * 0 = 1-bit mode
 	 */
-	if (mmc->bus_width == 8)
+	if (mmc->bus_width == 8) {
 		ctrl |= (1 << 5);
-	else if (mmc->bus_width == 4)
+		ctrl &= ~(1 << 1);
+	} else if (mmc->bus_width == 4) {
 		ctrl |= (1 << 1);
-	else
+		ctrl &= ~(1 << 5);
+	} else {
 		ctrl &= ~(1 << 1);
+		ctrl &= ~(1 << 5);
+	}
 
 	/*
 	 * OUTEDGEINV[2]
-- 
1.7.4.1



More information about the U-Boot mailing list