summaryrefslogtreecommitdiff
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorSahitya Tummala <stummala@codeaurora.org>2013-04-08 12:53:44 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-27 10:28:35 -0700
commiteea2294326cb1ff44143fae9cc0cb483175b6100 (patch)
tree35a9f4ea9a26fcee380ceb59a769942edf219757 /drivers/mmc/host
parent45110a0fe81ebdc27d3fd797ae8ffdd0e5dfdd79 (diff)
mmc: sdhci: Add timestamp debug info for data timeout error
This helps check the controller timeout logic in case of data timeout errors. Change-Id: Ia30757192e49865698c5f52940e1dc5d97746185 Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> [subhashj@codeaurora.org: fixed minor merge conflict] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci.c7
-rw-r--r--drivers/mmc/host/sdhci.h1
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 2ff24f7f9e0a..c12bd71d39a9 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1104,6 +1104,8 @@ void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
cmd->opcode == MMC_SEND_TUNING_BLOCK_HS200)
flags |= SDHCI_CMD_DATA;
+ if (cmd->data)
+ host->data_start_time = ktime_get();
sdhci_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND);
}
EXPORT_SYMBOL_GPL(sdhci_send_command);
@@ -2629,9 +2631,10 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
pr_msg = true;
}
if (pr_msg) {
- pr_err("%s: data txfr (0x%08x) error: %d\n",
+ pr_err("%s: data txfr (0x%08x) error: %d after %lld ms\n",
mmc_hostname(host->mmc), intmask,
- host->data->error);
+ host->data->error, ktime_to_ms(ktime_sub(
+ ktime_get(), host->data_start_time)));
sdhci_dumpregs(host);
}
sdhci_finish_data(host);
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 4d4765c3bfea..46bee820fb91 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -532,6 +532,7 @@ struct sdhci_host {
#define SDHCI_TUNING_MODE_1 0
unsigned int cpu_dma_latency_us;
struct pm_qos_request pm_qos_req_dma;
+ ktime_t data_start_time;
unsigned long private[0] ____cacheline_aligned;
};