diff options
author | Yannick Gicquel <yannick.gicquel@iot.bzh> | 2016-04-04 11:49:59 +0200 |
---|---|---|
committer | Nobuhiro Iwamatsu <iwamatsu@nigauri.org> | 2016-08-17 10:25:35 +0900 |
commit | 759319468505f4b6179c5fc4e3a682f2b2f44b3c (patch) | |
tree | 69061aaad997395b3a525f2e23fa3fe4557562a3 /drivers | |
parent | 4ebaba55a49ab403f2f771b6f76f8a5a42a93ea4 (diff) | |
download | u-boot-imx-759319468505f4b6179c5fc4e3a682f2b2f44b3c.zip u-boot-imx-759319468505f4b6179c5fc4e3a682f2b2f44b3c.tar.gz u-boot-imx-759319468505f4b6179c5fc4e3a682f2b2f44b3c.tar.bz2 |
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/sh_sdhi.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mmc/sh_sdhi.c b/drivers/mmc/sh_sdhi.c index 30e538c..dc4c686 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) | |