mmc: sdhci: Reorganize sdhci_finish_mrq() and __sdhci_finish_mrq()
authorAdrian Hunter <adrian.hunter@intel.com>
Fri, 5 Apr 2019 12:40:16 +0000 (15:40 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 15 Apr 2019 10:02:48 +0000 (12:02 +0200)
In preparation for removing finish_tasklet, reorganize sdhci_finish_mrq()
and __sdhci_finish_mrq() to separate the tasklet scheduling from other
processing.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Faiz Abbas <faiz_abbas@ti.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index bbc0e0bb7128f10d1a3e241b03a13904bd539d56..76e546ab7f3342e4f8fffde5056a7c6a997d9df4 100644 (file)
@@ -1221,6 +1221,18 @@ static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq)
 {
        int i;
 
+       if (host->cmd && host->cmd->mrq == mrq)
+               host->cmd = NULL;
+
+       if (host->data_cmd && host->data_cmd->mrq == mrq)
+               host->data_cmd = NULL;
+
+       if (host->data && host->data->mrq == mrq)
+               host->data = NULL;
+
+       if (sdhci_needs_reset(host, mrq))
+               host->pending_reset = true;
+
        for (i = 0; i < SDHCI_MAX_MRQS; i++) {
                if (host->mrqs_done[i] == mrq) {
                        WARN_ON(1);
@@ -1236,25 +1248,13 @@ static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq)
        }
 
        WARN_ON(i >= SDHCI_MAX_MRQS);
-
-       tasklet_schedule(&host->finish_tasklet);
 }
 
 static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq)
 {
-       if (host->cmd && host->cmd->mrq == mrq)
-               host->cmd = NULL;
-
-       if (host->data_cmd && host->data_cmd->mrq == mrq)
-               host->data_cmd = NULL;
-
-       if (host->data && host->data->mrq == mrq)
-               host->data = NULL;
-
-       if (sdhci_needs_reset(host, mrq))
-               host->pending_reset = true;
-
        __sdhci_finish_mrq(host, mrq);
+
+       tasklet_schedule(&host->finish_tasklet);
 }
 
 static void sdhci_finish_data(struct sdhci_host *host)