mmc: tmio: refactor handling mrq
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Fri, 19 May 2017 13:31:51 +0000 (15:31 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 20 Jun 2017 08:30:22 +0000 (10:30 +0200)
Split handling mrq into a seperate function. We need to call it from
another place soon.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/tmio_mmc_core.c

index 5f5a4a2..bfe70b1 100644 (file)
@@ -894,12 +894,36 @@ out:
        return ret;
 }
 
+static void tmio_process_mrq(struct tmio_mmc_host *host, struct mmc_request *mrq)
+{
+       int ret;
+
+       if (mrq->data) {
+               ret = tmio_mmc_start_data(host, mrq->data);
+               if (ret)
+                       goto fail;
+       }
+
+       ret = tmio_mmc_start_command(host, mrq->cmd);
+       if (ret)
+               goto fail;
+
+       schedule_delayed_work(&host->delayed_reset_work,
+                             msecs_to_jiffies(CMDREQ_TIMEOUT));
+       return;
+
+fail:
+       host->force_pio = false;
+       host->mrq = NULL;
+       mrq->cmd->error = ret;
+       mmc_request_done(host->mmc, mrq);
+}
+
 /* Process requests from the MMC layer */
 static void tmio_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
 {
        struct tmio_mmc_host *host = mmc_priv(mmc);
        unsigned long flags;
-       int ret;
 
        spin_lock_irqsave(&host->lock, flags);
 
@@ -919,25 +943,7 @@ static void tmio_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
 
        spin_unlock_irqrestore(&host->lock, flags);
 
-       if (mrq->data) {
-               ret = tmio_mmc_start_data(host, mrq->data);
-               if (ret)
-                       goto fail;
-       }
-
-       ret = tmio_mmc_start_command(host, mrq->cmd);
-       if (ret)
-               goto fail;
-
-       schedule_delayed_work(&host->delayed_reset_work,
-                             msecs_to_jiffies(CMDREQ_TIMEOUT));
-       return;
-
-fail:
-       host->force_pio = false;
-       host->mrq = NULL;
-       mrq->cmd->error = ret;
-       mmc_request_done(mmc, mrq);
+       tmio_process_mrq(host, mrq);
 }
 
 static int tmio_mmc_clk_enable(struct tmio_mmc_host *host)