Merge commit "aa8b683a7d392271ed349c6ab9f36b8c313794b7" of git://git.kernel.org/pub...
authorkfx <kfx@rock-chips.com>
Thu, 4 Jul 2013 03:27:10 +0000 (11:27 +0800)
committerkfx <kfx@rock-chips.com>
Thu, 4 Jul 2013 03:27:10 +0000 (11:27 +0800)
commite27d49b6c199a024758862036285a32c3c561238
tree1823fc42d5ba1a5b052c6cfe887881dc39ac303d
parent6d3fbffa37791f66bd27a87cd7b76cd5fdbab581
Merge commit "aa8b683a7d392271ed349c6ab9f36b8c313794b7" of git://git./linux/kernel/git/torvalds/linu

mmc: core: add non-blocking mmc request function

    Previously there has only been one function mmc_wait_for_req()
    to start and wait for a request. This patch adds:

     * mmc_start_req() - starts a request wihtout waiting
         If there is on ongoing request wait for completion
         of that request and start the new one and return.
         Does not wait for the new command to complete.

    This patch also adds new function members in struct mmc_host_ops
    only called from core.c:

     * pre_req - asks the host driver to prepare for the next job
     * post_req - asks the host driver to clean up after a completed job

    The intention is to use pre_req() and post_req() to do cache maintenance
    while a request is active. pre_req() can be called while a request is
    active to minimize latency to start next job. post_req() can be used after
    the next job is started to clean up the request. This will minimize the
    host driver request end latency. post_req() is typically used before
    ending the block request and handing over the buffer to the block layer.

    Add a host-private member in mmc_data to be used by pre_req to mark the
    data. The host driver will then check this mark to see if the data is
    prepared or not.
drivers/mmc/core/core.c
include/linux/mmc/core.h
include/linux/mmc/host.h