UPSTREAM: mmc: mmc: fix switch timeout issue caused by jiffies precision
authorChaotian Jing <chaotian.jing@mediatek.com>
Thu, 19 May 2016 08:47:42 +0000 (16:47 +0800)
committerZiyuan Xu <xzy.xu@rock-chips.com>
Fri, 12 Aug 2016 01:32:35 +0000 (09:32 +0800)
with CONFIG_HZ=100, the precision of jiffies is 10ms, and the
generic_cmd6_time of some card is also 10ms. then, may be current
time is only 5ms, but already timed out caused by jiffies precision.

(cherry picked from commit 987aa5f8059613bf85cbb6f64ffbd34f5cb7a9d1)

Change-Id: I43f1bc93e1100e86b138ec20a37612338a7153c6
Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
drivers/mmc/core/mmc_ops.c

index 2c90635c89afbb3782a48145fe830828dca4ec27..2db16bfc855b34c3b274149904fffd35da6432ef 100644 (file)
@@ -543,7 +543,7 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
                timeout_ms = MMC_OPS_TIMEOUT_MS;
 
        /* Must check status to be sure of no errors. */
-       timeout = jiffies + msecs_to_jiffies(timeout_ms);
+       timeout = jiffies + msecs_to_jiffies(timeout_ms) + 1;
        do {
                if (send_status) {
                        /*