]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mmc: atmel-mci: Set the timer per command rather than per request
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 14 Apr 2020 16:13:56 +0000 (18:13 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 28 May 2020 09:21:00 +0000 (11:21 +0200)
Setting the timer on a per request basis, is rather limiting as the timer
really depends on what commands that is to be sent as part of the request.

Therefore improve the behaviour by programming the timer per command basis
instead.

Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
Link: https://lore.kernel.org/r/20200414161413.3036-3-ulf.hansson@linaro.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/atmel-mci.c

index 0472df8391b5555b9cb8cd208df02e72ad1d02bd..7292970065b6e7bb194de6079ba7c7456a42cf47 100644 (file)
 #define        atmci_writel(port, reg, value)                  \
        __raw_writel((value), (port)->regs + reg)
 
+#define ATMCI_CMD_TIMEOUT_MS   2000
 #define AUTOSUSPEND_DELAY      50
 
 #define ATMCI_DATA_ERROR_FLAGS (ATMCI_DCRCE | ATMCI_DTOE | ATMCI_OVRE | ATMCI_UNRE)
@@ -817,6 +818,9 @@ static void atmci_send_command(struct atmel_mci *host,
 
        atmci_writel(host, ATMCI_ARGR, cmd->arg);
        atmci_writel(host, ATMCI_CMDR, cmd_flags);
+
+       mod_timer(&host->timer,
+                 jiffies + msecs_to_jiffies(ATMCI_CMD_TIMEOUT_MS));
 }
 
 static void atmci_send_stop_cmd(struct atmel_mci *host, struct mmc_data *data)
@@ -1314,8 +1318,6 @@ static void atmci_start_request(struct atmel_mci *host,
         * prepared yet.)
         */
        atmci_writel(host, ATMCI_IER, iflags);
-
-       mod_timer(&host->timer, jiffies +  msecs_to_jiffies(2000));
 }
 
 static void atmci_queue_request(struct atmel_mci *host,