diff --git a/drivers/mmc/matsushita-common.c b/drivers/mmc/matsushita-common.c
index 33224bb51b8116d70e1e74603995ae8416a2c4ef..e22a9de5daa4c9ad0fbd731372a26a881846c47a 100644
--- a/drivers/mmc/matsushita-common.c
+++ b/drivers/mmc/matsushita-common.c
@@ -66,7 +66,7 @@ void matsu_sd_writel(struct matsu_sd_priv *priv,
 {
 	if (priv->caps & MATSU_SD_CAP_64BIT)
 		writel(val, priv->regbase + (reg << 1));
-	if (priv->caps & MATSU_SD_CAP_16BIT) {
+	else if (priv->caps & MATSU_SD_CAP_16BIT) {
 		writew(val & 0xffff, priv->regbase + (reg >> 1));
 		if (reg == MATSU_SD_INFO1 || reg == MATSU_SD_INFO1_MASK ||
 		    reg == MATSU_SD_INFO2 || reg == MATSU_SD_INFO2_MASK ||