mmc: block: add handling for two parallel block requests in issue_rw_rq
authorPer Forlin <per.forlin@linaro.org>
Fri, 1 Jul 2011 16:55:33 +0000 (18:55 +0200)
committerChris Ball <cjb@laptop.org>
Wed, 20 Jul 2011 21:21:15 +0000 (17:21 -0400)
commitee8a43a51c7681f19fe23b6b936e1d8094a8b7d1
tree8d4e11c82e24b2538c87fb655e499e7d7f9b99ca
parent04296b7bfda45295a568b4b312e03828fae801dc
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>
drivers/mmc/card/block.c
drivers/mmc/card/queue.c
drivers/mmc/card/queue.h