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)
committerTony Lin <tony.lin@freescale.com>
Thu, 1 Mar 2012 06:45:09 +0000 (14:45 +0800)
commit7f059f3bbcf9624f6fe478835a8b140e0d6fafe0
treeba424e6cdc1e8c85ecfa833cc07bc39fadb60517
parent0ffe779f0aa5cff3a58206e12d1ee176bbfc29dc
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