From: Lei Wen Date: Sat, 8 Oct 2011 04:14:58 +0000 (+0000) Subject: mmc: sdhci: fix sdma bug for large file transfer X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=3e81c7724099f3f7e18bc3344825e63dcbf9a0f5;p=project%2Fbcm63xx%2Fu-boot.git mmc: sdhci: fix sdma bug for large file transfer SDHCI spec need to reset the sdma base address while the software try to accorss the 512k bytes address boundary. When meet such accross behavior, sdhci controller would generate a interrupt automatically, and software need handle this. Signed-off-by: Lei Wen --- diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 77a9e708d0..fce0ef0911 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -104,7 +104,7 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data, #ifdef CONFIG_MMC_SDMA if (stat & SDHCI_INT_DMA_END) { sdhci_writel(host, SDHCI_INT_DMA_END, SDHCI_INT_STATUS); - start_addr &= SDHCI_DEFAULT_BOUNDARY_SIZE - 1; + start_addr &= ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS); }