]> git.hungrycats.org Git - linux/commitdiff
mmc: sdhci: fix data timeout (part 1)
authorRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 26 Jan 2016 13:40:58 +0000 (13:40 +0000)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 18 Apr 2016 12:49:20 +0000 (08:49 -0400)
[ Upstream commit fafcfda9e78cae8796d1799f14e6457790797555 ]

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>
Cc: stable@vger.kernel.org # v3.15+
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/mmc/host/sdhci.c

index 9109287e47ac09c70b3912794ef2d835731dc7f7..13568f9b6f565836d3033625c0b5861a0286e32f 100644 (file)
@@ -660,7 +660,7 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
        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;
        }