From 759319468505f4b6179c5fc4e3a682f2b2f44b3c Mon Sep 17 00:00:00 2001 From: Yannick Gicquel Date: Mon, 4 Apr 2016 11:49:59 +0200 Subject: [PATCH] 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 --- drivers/mmc/sh_sdhi.c | 3 +++ 1 file changed, 3 insertions(+) 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) | -- 2.39.2