From: Yannick Gicquel <yannick.gicquel@iot.bzh>
Date: Mon, 4 Apr 2016 09:49:59 +0000 (+0200)
Subject: mmc: rmobile: add a compiler barrier
X-Git-Tag: v2025.01-rc5-pxa1908~8685^2~7
X-Git-Url: http://git.dujemihanovic.xyz/repo?a=commitdiff_plain;h=759319468505f4b6179c5fc4e3a682f2b2f44b3c;p=u-boot.git

mmc: rmobile: add a compiler barrier

Building w/ GCC v5.2, the SD card access is broken due to invalid data
in the response command reconstructed at the end of
sh_sdhci_get_response().

Add a memory barrier between the two main steps of this function to
ensure the resp[] table content is consistent before bits reordering.

This fix has been tested Ok on Porter board rev1.0 using v2016.03
release.

Signed-off-by: Yannick Gicquel <yannick.gicquel@iot.bzh>
---

diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c
index 30e538cc16..dc4c686fe9 100644
--- a/drivers/mmc/sh_sdhi.c
+++ b/drivers/mmc/sh_sdhi.c
@@ -430,6 +430,9 @@ static void sh_sdhi_get_response(struct sh_sdhi_host *host, struct mmc_cmd *cmd)
 	}
 
 	p2 = (unsigned long *)cmd->response;
+
+	barrier();
+
 #if defined(__BIG_ENDIAN_BITFIELD)
 	for (i = 0; i < cnt; i++) {
 		*p2++ = ((*p1 >> 16) & 0x0000ffff) |