From 2c530476d3898b8ab1d3d12df02bf96faf2e43bb Mon Sep 17 00:00:00 2001 From: Asutosh Das Date: Mon, 21 Oct 2013 17:17:03 +0530 Subject: [PATCH] mmc: sdhci: Use max timeout and skip timeout calculation Several data-timeout issues were seen, most of which were due to the card taking a longer time to respond. This patch increases the timeout of the controller to 0xF i.e. max possible. Change-Id: I6739de3eb5d9cccf8e39d9dc4730056782334162 CRs-Fixed: 536832 Signed-off-by: Asutosh Das --- drivers/mmc/host/sdhci.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 0a7a599588df..0394eaf50d86 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -717,6 +717,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd) if (host->quirks & SDHCI_QUIRK_BROKEN_TIMEOUT_VAL) return 0xE; + /* During initialization, don't use max timeout as the clock is slow */ + if ((host->quirks2 & SDHCI_QUIRK2_USE_RESERVED_MAX_TIMEOUT) && + (host->clock > 400000)) { + return 0xF; + } + /* Unspecified timeout, assume max */ if (!data && !cmd->busy_timeout) return 0xE;