summaryrefslogtreecommitdiffstats
path: root/drivers/mmc/card/queue.h
diff options
context:
space:
mode:
authorPer Forlin <per.forlin@linaro.org>2011-07-01 18:55:33 +0200
committerChris Ball <cjb@laptop.org>2011-07-20 23:21:15 +0200
commitee8a43a51c7681f19fe23b6b936e1d8094a8b7d1 (patch)
tree8d4e11c82e24b2538c87fb655e499e7d7f9b99ca /drivers/mmc/card/queue.h
parentmmc: queue: add a second mmc queue request member (diff)
downloadlinux-ee8a43a51c7681f19fe23b6b936e1d8094a8b7d1.tar.xz
linux-ee8a43a51c7681f19fe23b6b936e1d8094a8b7d1.zip
mmc: block: add handling for two parallel block requests in issue_rw_rq
Change mmc_blk_issue_rw_rq() to become asynchronous. The execution flow looks like this: * The mmc-queue calls issue_rw_rq(), which sends the request to the host and returns back to the mmc-queue. * The mmc-queue calls issue_rw_rq() again with a new request. * This new request is prepared in issue_rw_rq(), then it waits for the active request to complete before pushing it to the host. * When the mmc-queue is empty it will call issue_rw_rq() with a NULL req to finish off the active request without starting a new request. Signed-off-by: Per Forlin <per.forlin@linaro.org> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Venkatraman S <svenkatr@ti.com> Tested-by: Sourav Poddar <sourav.poddar@ti.com> Tested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/card/queue.h')
-rw-r--r--drivers/mmc/card/queue.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h
index 1a637d2e2ca6..d2a1eb4b9f9f 100644
--- a/drivers/mmc/card/queue.h
+++ b/drivers/mmc/card/queue.h
@@ -19,6 +19,7 @@ struct mmc_queue_req {
char *bounce_buf;
struct scatterlist *bounce_sg;
unsigned int bounce_sg_len;
+ struct mmc_async_req mmc_active;
};
struct mmc_queue {