mmc: core: Move mmc_card_removed() into mmc_start_request()
authorAdrian Hunter <adrian.hunter@intel.com>
Fri, 5 Dec 2014 17:41:02 +0000 (19:41 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 19 Jan 2015 08:56:30 +0000 (09:56 +0100)
Both callers of mmc_start_request() call mmc_card_removed()
so move that call into mmc_start_request().

This patch is preparation for adding re-tuning support.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/core.c

index dc9eb01..d5c176e 100644 (file)
@@ -185,13 +185,14 @@ void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq)
 
 EXPORT_SYMBOL(mmc_request_done);
 
-static void
-mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
+static int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
 {
 #ifdef CONFIG_MMC_DEBUG
        unsigned int i, sz;
        struct scatterlist *sg;
 #endif
+       if (mmc_card_removed(host->card))
+               return -ENOMEDIUM;
 
        if (mrq->sbc) {
                pr_debug("<%s: starting CMD%u arg %08x flags %08x>\n",
@@ -251,6 +252,8 @@ mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
        mmc_host_clk_hold(host);
        led_trigger_event(host->led, LED_FULL);
        host->ops->request(host, mrq);
+
+       return 0;
 }
 
 /**
@@ -345,29 +348,34 @@ static void mmc_wait_done(struct mmc_request *mrq)
  */
 static int __mmc_start_data_req(struct mmc_host *host, struct mmc_request *mrq)
 {
+       int err;
+
        mrq->done = mmc_wait_data_done;
        mrq->host = host;
-       if (mmc_card_removed(host->card)) {
-               mrq->cmd->error = -ENOMEDIUM;
+
+       err = mmc_start_request(host, mrq);
+       if (err) {
+               mrq->cmd->error = err;
                mmc_wait_data_done(mrq);
-               return -ENOMEDIUM;
        }
-       mmc_start_request(host, mrq);
 
-       return 0;
+       return err;
 }
 
 static int __mmc_start_req(struct mmc_host *host, struct mmc_request *mrq)
 {
+       int err;
+
        init_completion(&mrq->completion);
        mrq->done = mmc_wait_done;
-       if (mmc_card_removed(host->card)) {
-               mrq->cmd->error = -ENOMEDIUM;
+
+       err = mmc_start_request(host, mrq);
+       if (err) {
+               mrq->cmd->error = err;
                complete(&mrq->completion);
-               return -ENOMEDIUM;
        }
-       mmc_start_request(host, mrq);
-       return 0;
+
+       return err;
 }
 
 /*