| From fafcfda9e78cae8796d1799f14e6457790797555 Mon Sep 17 00:00:00 2001 |
| From: Russell King <rmk+kernel@arm.linux.org.uk> |
| Date: Tue, 26 Jan 2016 13:40:58 +0000 |
| Subject: mmc: sdhci: fix data timeout (part 1) |
| |
| From: Russell King <rmk+kernel@arm.linux.org.uk> |
| |
| commit fafcfda9e78cae8796d1799f14e6457790797555 upstream. |
| |
| The data timeout gives the minimum amount of time that should be |
| waited before timing out if no data is received from the card. |
| Simply dividing the nanosecond part by 1000 does not give this |
| required guarantee, since such a division rounds down. Use |
| DIV_ROUND_UP() to give the desired timeout. |
| |
| Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
| Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> |
| Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> |
| Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mmc/host/sdhci.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/mmc/host/sdhci.c |
| +++ b/drivers/mmc/host/sdhci.c |
| @@ -666,7 +666,7 @@ static u8 sdhci_calc_timeout(struct sdhc |
| if (!data) |
| target_timeout = cmd->busy_timeout * 1000; |
| else { |
| - target_timeout = data->timeout_ns / 1000; |
| + target_timeout = DIV_ROUND_UP(data->timeout_ns, 1000); |
| if (host->clock) |
| target_timeout += data->timeout_clks / host->clock; |
| } |