Commit f100c1c2 authored by Adrian Hunter's avatar Adrian Hunter Committed by Ulf Hansson

mmc: core: Move mmc_card_removed() into mmc_start_request()

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: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 63e415c6
...@@ -185,13 +185,14 @@ void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) ...@@ -185,13 +185,14 @@ void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq)
EXPORT_SYMBOL(mmc_request_done); EXPORT_SYMBOL(mmc_request_done);
static void static int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
{ {
#ifdef CONFIG_MMC_DEBUG #ifdef CONFIG_MMC_DEBUG
unsigned int i, sz; unsigned int i, sz;
struct scatterlist *sg; struct scatterlist *sg;
#endif #endif
if (mmc_card_removed(host->card))
return -ENOMEDIUM;
if (mrq->sbc) { if (mrq->sbc) {
pr_debug("<%s: starting CMD%u arg %08x flags %08x>\n", 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) ...@@ -251,6 +252,8 @@ mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
mmc_host_clk_hold(host); mmc_host_clk_hold(host);
led_trigger_event(host->led, LED_FULL); led_trigger_event(host->led, LED_FULL);
host->ops->request(host, mrq); host->ops->request(host, mrq);
return 0;
} }
/** /**
...@@ -345,29 +348,34 @@ static void mmc_wait_done(struct mmc_request *mrq) ...@@ -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) static int __mmc_start_data_req(struct mmc_host *host, struct mmc_request *mrq)
{ {
int err;
mrq->done = mmc_wait_data_done; mrq->done = mmc_wait_data_done;
mrq->host = host; 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); 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) static int __mmc_start_req(struct mmc_host *host, struct mmc_request *mrq)
{ {
int err;
init_completion(&mrq->completion); init_completion(&mrq->completion);
mrq->done = mmc_wait_done; 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); complete(&mrq->completion);
return -ENOMEDIUM;
} }
mmc_start_request(host, mrq);
return 0; return err;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment