diff options
author | Sahitya Tummala <stummala@codeaurora.org> | 2013-04-08 12:53:44 +0530 |
---|---|---|
committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-27 10:28:35 -0700 |
commit | eea2294326cb1ff44143fae9cc0cb483175b6100 (patch) | |
tree | 35a9f4ea9a26fcee380ceb59a769942edf219757 /drivers/mmc/host | |
parent | 45110a0fe81ebdc27d3fd797ae8ffdd0e5dfdd79 (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.c | 7 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.h | 1 |
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; }; |