diff options
author | Kishon Vijay Abraham I <kishon@ti.com> | 2018-04-27 17:17:17 +0530 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2018-05-03 09:36:20 +0200 |
commit | fc1fa1b7db27546803905feef403cedf40ca027a (patch) | |
tree | d649284a31fde36d72e46bd18e3f7ce7917f997c /drivers/mmc/host/sdhci.h | |
parent | 0bb28d738fb2066b314d0fe2eccffd1cab59517b (diff) | |
download | linux-stable-fc1fa1b7db27546803905feef403cedf40ca027a.tar.gz linux-stable-fc1fa1b7db27546803905feef403cedf40ca027a.tar.bz2 linux-stable-fc1fa1b7db27546803905feef403cedf40ca027a.zip |
mmc: sdhci: Program a relatively accurate SW timeout value
sdhci has a 10 second timeout to catch devices that stop responding.
In the case of quirk SDHCI_QUIRK2_DISABLE_HW_TIMEOUT, instead of
programming 10 second arbitrary value, calculate the total time it would
take for the entire transfer to happen and program the timeout value
accordingly.
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/host/sdhci.h')
-rw-r--r-- | drivers/mmc/host/sdhci.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index f6555c0f4ad3..23966f887da6 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -332,6 +332,14 @@ struct sdhci_adma2_64_desc { /* Allow for a a command request and a data request at the same time */ #define SDHCI_MAX_MRQS 2 +/* + * 48bit command and 136 bit response in 100KHz clock could take upto 2.48ms. + * However since the start time of the command, the time between + * command and response, and the time between response and start of data is + * not known, set the command transfer time to 10ms. + */ +#define MMC_CMD_TRANSFER_TIME (10 * NSEC_PER_MSEC) /* max 10 ms */ + enum sdhci_cookie { COOKIE_UNMAPPED, COOKIE_PRE_MAPPED, /* mapped by sdhci_pre_req() */ @@ -555,6 +563,8 @@ struct sdhci_host { /* Host SDMA buffer boundary. */ u32 sdma_boundary; + u64 data_timeout; + unsigned long private[0] ____cacheline_aligned; }; |