linux/drivers/mmc/core
Per Forlin aa8b683a7d 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.

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>
2011-07-20 17:21:10 -04:00
..
bus.c mmc: sd: report correct speed and capacity of uhs cards 2011-05-24 23:53:46 -04:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
core.c mmc: core: add non-blocking mmc request function 2011-07-20 17:21:10 -04:00
core.h mmc: core: add support for eMMC Dual Data Rate 2011-05-24 23:53:58 -04:00
debugfs.c mmc: Aggressive clock gating framework 2011-01-08 22:48:03 -05:00
host.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-05-25 16:55:55 -07:00
host.h mmc: Aggressive clock gating framework 2011-01-08 22:48:03 -05:00
Kconfig mmc: Aggressive clock gating framework 2011-01-08 22:48:03 -05:00
Makefile mmc: add per device quirk placeholder 2011-03-15 13:48:33 -04:00
mmc_ops.c mmc: initialize struct mmc_request at declaration time 2011-05-24 21:02:01 -04:00
mmc_ops.h mmc: core: Allow setting CMD timeout for CMD6 (SWITCH). 2011-05-24 21:01:13 -04:00
mmc.c mmc: core: Bus width testing needs to handle suspend/resume 2011-07-13 14:54:37 -04:00
quirks.c mmc: quirks: Extends card quirks with MMC/SD quirks matching the CID. 2011-05-24 21:00:54 -04:00
sd_ops.c mmc: core: Add mmc CMD+ACMD passthrough ioctl 2011-05-24 21:02:54 -04:00
sd_ops.h mmc: add erase, secure erase, trim and secure trim operations 2010-08-12 08:43:30 -07:00
sd.c mmc: core: Block CMD23 support for UHS104/SDXC cards. 2011-05-25 16:49:03 -04:00
sd.h mmc: sd: add support for driver type selection 2011-05-24 23:53:24 -04:00
sdio_bus.c mmc: sdio: fix runtime PM path during driver removal 2011-06-25 18:49:55 -04:00
sdio_bus.h mmc: basic SDIO device model 2007-09-23 19:45:31 +02:00
sdio_cis.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sdio_cis.h sdio: split up common and function CIS parsing 2007-09-23 20:44:22 +02:00
sdio_io.c sdio: add new function for RAW (Read after Write) operation 2010-05-27 09:12:40 -07:00
sdio_irq.c mmc: sdio: optimized SDIO IRQ handling for single irq 2011-05-24 23:53:50 -04:00
sdio_ops.c mmc: initialize struct mmc_request at declaration time 2011-05-24 21:02:01 -04:00
sdio_ops.h sdio: recognize io card without powercycle 2010-03-12 15:52:28 -08:00
sdio.c mmc: sdio: reset card during power_restore 2011-06-25 18:52:44 -04:00