mmc: sdhci: correct the maximum timeout when enable CMDQ
authorBOUGH CHEN <haibo.chen@nxp.com>
Mon, 7 Jan 2019 10:11:36 +0000 (10:11 +0000)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 25 Feb 2019 07:40:58 +0000 (08:40 +0100)
Change to use sdhci_set_timeout() to set the maximum timeout, so that
the host can use it's own set_timeout() callback to set the maximum
timeout if the host has.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index 283dab5fc8d4420fc5469b47b4feb7ce56fd5b77..c8ca3ce316c44680c1cf7f4cdf37b10f687d07ff 100644 (file)
@@ -883,7 +883,7 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd,
                             bool *too_big)
 {
        u8 count;
-       struct mmc_data *data = cmd->data;
+       struct mmc_data *data;
        unsigned target_timeout, current_timeout;
 
        *too_big = true;
@@ -897,6 +897,11 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd,
        if (host->quirks & SDHCI_QUIRK_BROKEN_TIMEOUT_VAL)
                return 0xE;
 
+       /* Unspecified command, asume max */
+       if (cmd == NULL)
+               return 0xE;
+
+       data = cmd->data;
        /* Unspecified timeout, assume max */
        if (!data && !cmd->busy_timeout)
                return 0xE;
@@ -3364,7 +3369,7 @@ void sdhci_cqe_enable(struct mmc_host *mmc)
                     SDHCI_BLOCK_SIZE);
 
        /* Set maximum timeout */
-       sdhci_writeb(host, 0xE, SDHCI_TIMEOUT_CONTROL);
+       sdhci_set_timeout(host, NULL);
 
        host->ier = host->cqe_ier;