OSDN Git Service

mmc: mvsdio: Respect card busy time out from mmc core
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 31 May 2018 10:16:04 +0000 (12:16 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 31 May 2018 13:01:13 +0000 (15:01 +0200)
Instead of using a hardcoded timeout of 5 * HZ jiffies, let's respect the
command busy timeout provided by the mmc core. This make the used timeout
more reliable.

Cc: Damien Thebault <damien.thebault@vitec.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Damien Thebault <damien.thebault@vitec.com>
drivers/mmc/host/mvsdio.c

index 210247b..4c70829 100644 (file)
@@ -143,6 +143,7 @@ static void mvsd_request(struct mmc_host *mmc, struct mmc_request *mrq)
        struct mmc_command *cmd = mrq->cmd;
        u32 cmdreg = 0, xfer = 0, intr = 0;
        unsigned long flags;
+       unsigned int timeout;
 
        BUG_ON(host->mrq != NULL);
        host->mrq = mrq;
@@ -234,7 +235,8 @@ static void mvsd_request(struct mmc_host *mmc, struct mmc_request *mrq)
        mvsd_write(MVSD_NOR_INTR_EN, host->intr_en);
        mvsd_write(MVSD_ERR_INTR_EN, 0xffff);
 
-       mod_timer(&host->timer, jiffies + 5 * HZ);
+       timeout = cmd->busy_timeout ? cmd->busy_timeout : 5000;
+       mod_timer(&host->timer, jiffies + msecs_to_jiffies(timeout));
 
        spin_unlock_irqrestore(&host->lock, flags);
 }