linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/13] mmc: Improve busy detection for MMC_CAP_WAIT_WHILE_BUSY
@ 2014-01-29 22:37 Ulf Hansson
  2014-01-29 22:37 ` [PATCH 01/13] mmc: core: Rename max_discard_to to max_busy_timeout Ulf Hansson
                   ` (13 more replies)
  0 siblings, 14 replies; 21+ messages in thread
From: Ulf Hansson @ 2014-01-29 22:37 UTC (permalink / raw)
  To: linux-mmc, Chris Ball
  Cc: Dong Aisheng, Stephen Warren, Vladimir Zapolskiy, Adrian Hunter,
	Ulf Hansson

This patchset improves the handling around busy detection in the mmc core layer
while operating on host supporting MMC_CAP_WAIT_WHILE_BUSY.

A R1B response is for an mmc command, specified as and R1 but with an optional
busy assertion on the DAT0 line. Hosts supporting MMC_CAP_WAIT_WHILE_BUSY,
normally has a busy detection mechanism build in it's controller HW.

Using such a feature decreases the need for polling of the card's status using
CMD13, which is the fallback method used by the mmc core for hosts that don't
support MMC_CAP_WAIT_WHILE_BUSY.

Typcial commands that expects R1B responses are CMD6 (SWITCH), CMD12 (STOP),
CMD38 (ERASE) and CMD5 (SLEEP). This patchset adresses CMD6, CMD5 and improves
some parts where CMD12 are used. If the implemented approach becomes accepted,
a future patchset for CMD38 can be based on top if this patchset.

Do note, the final two patches implements support for busy detection for the
mmci host driver, since some of it's HW variants do supports busy detection.

Future suggested improvements related to this patchset: (Please, feel free to
implement any of them :-) ).

a) For CMD38, select a fixed number maximum blocks to accept for
erase/discard/trim operations. Compute the needed timeout depending on each
card's erase information provided through it's CSD/EXT_CSD registers. Then
follow the same principle as for sending a CMD6.

b) At least for CMD38, but likely for other commands as well, we could benefit
from doing a _periodic_ CMD13 polling to handle the busy completion. This will
also be useful for hosts supporting MMC_CAP_WAIT_WHILE_BUSY, in particular for
cases where the host are unable to support the needed busy timeout.

c) Handle timeouts while polling for card's status with CMD13 in cases where
a CMD12 has been used to finalize a data DATA_WRITE transfer.


Ulf Hansson (13):
  mmc: core: Rename max_discard_to to max_busy_timeout
  mmc: core: Rename cmd_timeout_ms to busy_timeout
  mmc: core: Add ignore_crc flag to __mmc_switch
  mmc: core: Minor simplifications to __mmc_switch
  mmc: core: Fixup busy detection for mmc switch operations
  mmc: core: Use generic CMD6 time while switching to eMMC HS200 mode
  mmc: core: Respect host's max_busy_timeout when sending sleep cmd
  mmc: block: Use R1 responses for stop cmds for read requests
  mmc: block: Implement card_busy_detect() for busy detection
  mmc: block: Respect hw busy detection in card_busy_detect()
  mmc: block: Fixup busy detection while invoking stop cmd at recovery
  mmc: mmci: Handle CMD irq before DATA irq
  mmc: mmci: Enable support for busy detection for ux500 variant

 drivers/mmc/card/block.c   |  178 ++++++++++++++++++++++++++++----------------
 drivers/mmc/core/core.c    |   11 +--
 drivers/mmc/core/mmc.c     |   34 ++++++---
 drivers/mmc/core/mmc_ops.c |   64 ++++++++++------
 drivers/mmc/host/mmci.c    |   54 +++++++++++---
 drivers/mmc/host/mmci.h    |    2 +
 drivers/mmc/host/sdhci.c   |   10 +--
 include/linux/mmc/core.h   |    4 +-
 include/linux/mmc/host.h   |    2 +-
 9 files changed, 241 insertions(+), 118 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2014-09-05 11:02 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-29 22:37 [PATCH 00/13] mmc: Improve busy detection for MMC_CAP_WAIT_WHILE_BUSY Ulf Hansson
2014-01-29 22:37 ` [PATCH 01/13] mmc: core: Rename max_discard_to to max_busy_timeout Ulf Hansson
2014-01-29 22:37 ` [PATCH 02/13] mmc: core: Rename cmd_timeout_ms to busy_timeout Ulf Hansson
2014-01-29 22:37 ` [PATCH 03/13] mmc: core: Add ignore_crc flag to __mmc_switch Ulf Hansson
2014-01-29 22:37 ` [PATCH 04/13] mmc: core: Minor simplifications " Ulf Hansson
2014-01-29 22:37 ` [PATCH 05/13] mmc: core: Fixup busy detection for mmc switch operations Ulf Hansson
2014-01-29 22:37 ` [PATCH 06/13] mmc: core: Use generic CMD6 time while switching to eMMC HS200 mode Ulf Hansson
2014-01-29 22:37 ` [PATCH 07/13] mmc: core: Respect host's max_busy_timeout when sending sleep cmd Ulf Hansson
2014-01-29 22:38 ` [PATCH 08/13] mmc: block: Use R1 responses for stop cmds for read requests Ulf Hansson
2014-01-29 22:38 ` [PATCH 09/13] mmc: block: Implement card_busy_detect() for busy detection Ulf Hansson
2014-01-29 22:38 ` [PATCH 10/13] mmc: block: Respect hw busy detection in card_busy_detect() Ulf Hansson
2014-01-29 22:38 ` [PATCH 11/13] mmc: block: Fixup busy detection while invoking stop cmd at recovery Ulf Hansson
2014-01-29 22:38 ` [PATCH 12/13] mmc: mmci: Handle CMD irq before DATA irq Ulf Hansson
2014-02-12 13:17   ` Ulf Hansson
2014-01-29 22:38 ` [PATCH 13/13] mmc: mmci: Enable support for busy detection for ux500 variant Ulf Hansson
2014-02-12 13:20   ` Ulf Hansson
2014-09-03  6:51 ` [PATCH 00/13] mmc: Improve busy detection for MMC_CAP_WAIT_WHILE_BUSY Dong Aisheng
2014-09-03  7:32   ` Ulf Hansson
2014-09-03  7:24     ` Dong Aisheng
2014-09-05  9:29     ` Jaehoon Chung
2014-09-05 11:02       ` Ulf Hansson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).