[U-Boot] [PATCH 1/5] mmc: matsushita-common: Special case only select registers in 16bit

Marek Vasut marek.vasut at gmail.com
Mon Apr 9 23:49:18 UTC 2018


There are only a few registerse used in the 16bit mode which are
32bit internally. Special-case only those in the IO accessors and
always write both halves. Any other register access is protected
from accidentally overwriting neighboring register.

Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
Cc: Jaehoon Chung <jh80.chung at samsung.com>
Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
---
 drivers/mmc/matsushita-common.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/matsushita-common.c b/drivers/mmc/matsushita-common.c
index 3f538c354e..739586557a 100644
--- a/drivers/mmc/matsushita-common.c
+++ b/drivers/mmc/matsushita-common.c
@@ -68,7 +68,9 @@ void matsu_sd_writel(struct matsu_sd_priv *priv,
 		writel(val, priv->regbase + (reg << 1));
 	if (priv->caps & MATSU_SD_CAP_16BIT) {
 		writew(val & 0xffff, priv->regbase + (reg >> 1));
-		if (val >> 16)
+		if (reg == MATSU_SD_INFO1 || reg == MATSU_SD_INFO1_MASK ||
+		    reg == MATSU_SD_INFO2 || reg == MATSU_SD_INFO2_MASK ||
+		    reg == MATSU_SD_ARG)
 			writew(val >> 16, priv->regbase + (reg >> 1) + 2);
 	} else
 		writel(val, priv->regbase + reg);
-- 
2.16.2



More information about the U-Boot mailing list