diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-11-19 20:28:12 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-11-19 20:28:12 -0800 |
commit | eb867c45baacad05921c2209285da36449d3edee (patch) | |
tree | 0bdbc65d78687c49df4c1dfa620fb9f7e848de48 | |
parent | 840edb43fdbe2978c0229197c01e9fbe42a3ce37 (diff) | |
parent | 5c3b7792b70d8f005b239cfe42ee0ec266f72a7f (diff) |
Merge "mmc: host: sdhci: don't set SDMA buffer boundary in ADMA mode"
-rw-r--r-- | drivers/mmc/host/sdhci.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 3a12acab7840..5077ec797cdf 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -877,6 +877,17 @@ static void sdhci_set_transfer_irqs(struct sdhci_host *host) sdhci_clear_set_irqs(host, dma_irqs, pio_irqs); } +static void sdhci_set_blk_size_reg(struct sdhci_host *host, unsigned int blksz, + unsigned int sdma_boundary) +{ + if (host->flags & SDHCI_USE_ADMA) + sdhci_writew(host, SDHCI_MAKE_BLKSZ(0, blksz), + SDHCI_BLOCK_SIZE); + else + sdhci_writew(host, SDHCI_MAKE_BLKSZ(sdma_boundary, blksz), + SDHCI_BLOCK_SIZE); +} + static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) { u8 count; @@ -1048,8 +1059,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) sdhci_set_transfer_irqs(host); /* Set the DMA boundary value and block size */ - sdhci_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, - data->blksz), SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, data->blksz, SDHCI_DEFAULT_BOUNDARY_ARG); sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT); } @@ -2397,14 +2407,11 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) if ((cmd.opcode == MMC_SEND_TUNING_BLOCK_HS400) || (cmd.opcode == MMC_SEND_TUNING_BLOCK_HS200)) { if (mmc->ios.bus_width == MMC_BUS_WIDTH_8) - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 128), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 128, 7); else if (mmc->ios.bus_width == MMC_BUS_WIDTH_4) - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 64), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 64, 7); } else { - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 64), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 64, 7); } /* |