aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hansson <ulf.hansson@linaro.org>2012-10-12 09:07:36 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-10-18 06:06:23 -0400
commit70ac09358cc52f3ddbf73555dc150d486a7133bb (patch)
tree8d210b8a67722192b37b0b7c6b4fa233703efdbf
parent06c1a121805d7870abbf037d3ccd9a609a5219f2 (diff)
ARM: 7552/1: mmc: mmci: Switching off HWFC for SDIO depends on MCLK
For writes, HWFC shall be switched off when transfer size <= 8 bytes and when MCLK rate is above 50 MHz. For 50MHz and below it shall be switched off when transfer size < 8 bytes. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Johan Rudholm <johan.rudholm@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--drivers/mmc/host/mmci.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 877079e778cd..cd0fbee0b1c0 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -664,12 +664,14 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
664 datactrl |= MCI_ST_DPSM_SDIOEN; 664 datactrl |= MCI_ST_DPSM_SDIOEN;
665 665
666 /* 666 /*
667 * The ST Micro variant for SDIO transfer sizes 667 * The ST Micro variant for SDIO small write transfers
668 * less then 8 bytes should have clock H/W flow 668 * needs to have clock H/W flow control disabled,
669 * control disabled. 669 * otherwise the transfer will not start. The threshold
670 * depends on the rate of MCLK.
670 */ 671 */
671 if ((host->size < 8) && 672 if (data->flags & MMC_DATA_WRITE &&
672 (data->flags & MMC_DATA_WRITE)) 673 (host->size < 8 ||
674 (host->size <= 8 && host->mclk > 50000000)))
673 clk = host->clk_reg & ~variant->clkreg_enable; 675 clk = host->clk_reg & ~variant->clkreg_enable;
674 else 676 else
675 clk = host->clk_reg | variant->clkreg_enable; 677 clk = host->clk_reg | variant->clkreg_enable;