summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorRitesh Harjani <riteshh@codeaurora.org>2015-09-27 21:51:01 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-31 15:28:04 -0700
commit84de99e1ded4e96ac36c2287b7d9e4b9cdd8dcc4 (patch)
tree1f125de561e2f9a2a9283e52b17f10bb9bf7784c /drivers/mmc
parentfc272f2bf29afe51979ca1c5d9cc72ae398db4b8 (diff)
mmc: core: Call cmdq_post_req with tag info instead of mrq
Call mmc_/cmdq_post_req with tag number instead of mrq. This is needed in error handling as part of multiple request error handling. Change-Id: I175432639d28378ec74669e31deb4d1667c49bb8 Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/card/block.c2
-rw-r--r--drivers/mmc/core/core.c6
-rw-r--r--drivers/mmc/host/cmdq_hci.c18
3 files changed, 17 insertions, 9 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 3d6def7f44be..a353130806ec 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -3200,7 +3200,7 @@ void mmc_blk_cmdq_complete_rq(struct request *rq)
BUG_ON(!test_and_clear_bit(cmdq_req->tag,
&ctx_info->data_active_reqs));
- mmc_cmdq_post_req(host, mrq, err);
+ mmc_cmdq_post_req(host, cmdq_req->tag, err);
if (err) {
pr_err("%s: %s: txfr error: %d\n", mmc_hostname(mrq->host),
__func__, err);
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 0f2c693696d5..1a972207f299 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1512,13 +1512,13 @@ EXPORT_SYMBOL(mmc_cmdq_discard_queue);
/**
* mmc_cmdq_post_req - post process of a completed request
* @host: host instance
- * @mrq: the request to be processed
+ * @tag: the request tag.
* @err: non-zero is error, success otherwise
*/
-void mmc_cmdq_post_req(struct mmc_host *host, struct mmc_request *mrq, int err)
+void mmc_cmdq_post_req(struct mmc_host *host, int tag, int err)
{
if (likely(host->cmdq_ops->post_req))
- host->cmdq_ops->post_req(host, mrq, err);
+ host->cmdq_ops->post_req(host, tag, err);
}
EXPORT_SYMBOL(mmc_cmdq_post_req);
diff --git a/drivers/mmc/host/cmdq_hci.c b/drivers/mmc/host/cmdq_hci.c
index a5f121516417..4c5817776dfe 100644
--- a/drivers/mmc/host/cmdq_hci.c
+++ b/drivers/mmc/host/cmdq_hci.c
@@ -992,15 +992,23 @@ static int cmdq_halt(struct mmc_host *mmc, bool halt)
return ret;
}
-static void cmdq_post_req(struct mmc_host *host, struct mmc_request *mrq,
- int err)
+static void cmdq_post_req(struct mmc_host *mmc, int tag, int err)
{
- struct mmc_data *data = mrq->data;
- struct sdhci_host *sdhci_host = mmc_priv(host);
+ struct cmdq_host *cq_host;
+ struct mmc_request *mrq;
+ struct mmc_data *data;
+ struct sdhci_host *sdhci_host = mmc_priv(mmc);
+
+ if (WARN_ON(!mmc))
+ return;
+
+ cq_host = (struct cmdq_host *)mmc_cmdq_private(mmc);
+ mrq = get_req_by_tag(cq_host, tag);
+ data = mrq->data;
if (data) {
data->error = err;
- dma_unmap_sg(mmc_dev(host), data->sg, data->sg_len,
+ dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len,
(data->flags & MMC_DATA_READ) ?
DMA_FROM_DEVICE : DMA_TO_DEVICE);
if (err)