diff options
author | Per Forlin <per.forlin@linaro.org> | 2011-07-01 18:55:33 +0200 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-07-20 23:21:15 +0200 |
commit | ee8a43a51c7681f19fe23b6b936e1d8094a8b7d1 (patch) | |
tree | 8d4e11c82e24b2538c87fb655e499e7d7f9b99ca /drivers/mmc/card/queue.h | |
parent | mmc: queue: add a second mmc queue request member (diff) | |
download | linux-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.h | 1 |
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 { |