From: Yuezhang.Mo@sony.com Date: Thu, 14 Jan 2021 05:46:50 +0000 (+0000) Subject: mmc: sdhci: skip cache invalidation if DMA is not used X-Git-Url: http://git.dujemihanovic.xyz/img/static/git-logo.png?a=commitdiff_plain;h=37e1362efc2ba9be5355b3c55f9f4f7a43f02de2;p=u-boot.git mmc: sdhci: skip cache invalidation if DMA is not used If DMA(SDMA or ADMA) is not used, the cache invalidation after reading is no need, should be skipped. Otherwise U-Boot may hang at the cache invalidation. Found this issue and tested this fix on DragonBoard 410c. Fixes: commit 4155ad9aac94 ("mmc: sdhci: fix missing cache invalidation after reading by DMA") Signed-off-by: Yuezhang.Mo Reviewed-by: Andy Wu --- diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 5f18d472bd..d9ab6a0a83 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -177,8 +177,10 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) } } while (!(stat & SDHCI_INT_DATA_END)); +#if (defined(CONFIG_MMC_SDHCI_SDMA) || CONFIG_IS_ENABLED(MMC_SDHCI_ADMA)) dma_unmap_single(host->start_addr, data->blocks * data->blocksize, mmc_get_dma_dir(data)); +#endif return 0; }