From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc <linux-mmc@vger.kernel.org>,
Aaron Lu <aaron.lu@intel.com>, Philip Rakity <prakity@nvidia.com>,
Al Cooper <alcooperx@gmail.com>,
Arend van Spriel <arend@broadcom.com>
Subject: [PATCH V6 00/15] mmc: host: Add facility to support re-tuning
Date: Mon, 20 Apr 2015 15:09:41 +0300 [thread overview]
Message-ID: <1429531796-21987-1-git-send-email-adrian.hunter@intel.com> (raw)
Hi
Here is V6 of some patches to move re-tuning support
out of sdhci and into the core, and add support for HS400
re-tuning.
Currently sdhci does re-tuning transparently by
calling sdhci_execute_tuning() from its ->request()
function.
The problem with HS400 re-tuning is that it must be
done in HS200 mode. That means using switch commands
and making ios changes. That means it potentially
conflicts with other command sequences. The new
re-tuning support accomodates that.
Changes in V6:
mmc: host: Add facility to support re-tuning
Don't export functions only used in core
mmc: core: Enable / disable re-tuning
Ensure re-tuning timer is disabled in SDIO suspend
mmc: core: Hold re-tuning while bkops ongoing
Hold re-tuning always and release only if
bkops is not ongoing.
mmc: mmc: Hold re-tuning if the card is put to sleep
Hold re-tuning for mmc_sleep even if card is
immediately powered off, disabling re-tuning.
Changes in V5:
mmc: host: Add facility to support re-tuning
Make mmc_retune_enable() / mmc_retune_disable()
only called from core.
mmc: core: Enable / disable re-tuning
Replaces mmc: core: Disable re-tuning when card is no longer initialized
Enables re-tuning when tuning is executed
mmc: sdhci: Change to new way of doing re-tuning
Set host->retune_period instead of enabling re-tuning.
Changes in V4:
These patches now depend on Ulf's patch:
mmc: core: Enable runtime PM management of host devices
mmc: host: Add facility to support re-tuning
Assume mmc_claim_host() runtime resumes the host
controller so there are no races with runtime pm.
Consequently remove now un-needed re-tuning host
operations.
mmc: core: Add support for re-tuning before each request
Call mmc_retune() prior to ->request()
mmc: sdhci: Change to new way of doing re-tuning
Updated to reflect the changes above.
Changes in V3:
mmc: host: Add facility to support re-tuning
Add host->retune_now flag so re-tuning can be
started in the host drivers ->request()
function to avoid racing with Runtime PM.
Add host operations to let the host know when
re-tuning is held, for eaxmple, to enable
synchronization with runtime suspend / resume.
Ensure functions are exported.
mmc: core: Add support for re-tuning before each request
Updated to reflect the change above.
mmc: core: Check re-tuning before retrying
Updated to reflect the change above.
mmc: core: Hold re-tuning during switch commands
Updated to reflect the change above.
mmc: core: Hold re-tuning during erase commands
Updated to reflect the change above.
mmc: core: Hold re-tuning while bkops ongoing
Updated to reflect the change above.
mmc: core: Add support for HS400 re-tuning
Updated and as already sent separately as V3:
Remember to mmc_set_bus_speed(card) in mmc_hs400_to_hs200()
mmc: sdhci: Change to new way of doing re-tuning
Call mmc_retune() from ->request() function to
avoid racing with Runtime PM. And implement
hold_tuning / release_tuning operations to prevent
runtime suspend while re-tuning is held.
mmc: block: Retry errored data requests when re-tuning is needed
Updated and as already sent separately as V3:
Only retry when there is an error
Changes in V2:
Added support to the block driver for re-tuning
and retrying after a CRC error. The host driver
is left to decide when an error indicates re-tuning
is needed. The block driver will retry a data request
once if re-tuning is flagged as needed.
SDIO drivers need not be aware of re-tuning because
retrying will anyway cause re-tuning when re-tuning
is flagged as needed. Nevertheless SDIO drivers could
use the need_retune flag to instigate a retry when
otherwise they might not have.
mmc: core: Simplify by adding mmc_execute_tuning()
Dropped because it has been applied
mmc: host: Add facility to support re-tuning
Renamed mmc_retune_retry() to mmc_retune_recheck()
to better reflect what it does.
mmc: core: Move mmc_card_removed() into mmc_start_request()
Dropped because it has been applied
mmc: core: Add support for re-tuning before each request
Fixed un-balanced re-tune hold / release
mmc: sdhci: Always init buf_ready_int
Dropped because it has been applied
mmc: core: Separate out the mmc_switch status check so it can be re-used
New patch
mmc: core: Add support for HS400 re-tuning
It was found that that the original code was not reliable
after a CRC error. The problem was that the CMD13 after a
switch was faiing. So the code was changed to check the
switch status *after* changing the I/O state to match the
switch i.e. the new I/O state is the correct one to use
after a switch.
mmc: sdhci: Flag re-tuning is needed on CRC or End-Bit errors
New patch
mmc: block: Check re-tuning in the recovery path
New patch
mmc: block: Retry data requests when re-tuning is needed
New patch
mmc: core: Don't print reset warning if reset is not supported
New patch
Adrian Hunter (15):
mmc: host: Add facility to support re-tuning
mmc: core: Enable / disable re-tuning
mmc: core: Add support for re-tuning before each request
mmc: core: Check re-tuning before retrying
mmc: core: Hold re-tuning during switch commands
mmc: core: Hold re-tuning during erase commands
mmc: core: Hold re-tuning while bkops ongoing
mmc: mmc: Hold re-tuning if the card is put to sleep
mmc: core: Separate out the mmc_switch status check so it can be re-used
mmc: core: Add support for HS400 re-tuning
mmc: sdhci: Change to new way of doing re-tuning
mmc: sdhci: Flag re-tuning is needed on CRC or End-Bit errors
mmc: block: Check re-tuning in the recovery path
mmc: block: Retry errored data requests when re-tuning is needed
mmc: core: Don't print reset warning if reset is not supported
drivers/mmc/card/block.c | 14 ++++-
drivers/mmc/card/queue.h | 1 +
drivers/mmc/core/core.c | 51 +++++++++++++++---
drivers/mmc/core/core.h | 2 +
drivers/mmc/core/host.c | 85 ++++++++++++++++++++++++++++++
drivers/mmc/core/host.h | 6 +++
drivers/mmc/core/mmc.c | 102 ++++++++++++++++++++++++++++++++++--
drivers/mmc/core/mmc_ops.c | 44 ++++++++++------
drivers/mmc/core/mmc_ops.h | 1 +
drivers/mmc/core/sdio.c | 2 +
drivers/mmc/host/sdhci.c | 126 ++++++++-------------------------------------
drivers/mmc/host/sdhci.h | 3 --
include/linux/mmc/host.h | 28 ++++++++++
13 files changed, 330 insertions(+), 135 deletions(-)
Regards
Adrian
next reply other threads:[~2015-04-20 12:12 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-20 12:09 Adrian Hunter [this message]
2015-04-20 12:09 ` [PATCH V6 01/15] mmc: host: Add facility to support re-tuning Adrian Hunter
2015-05-04 13:14 ` Ulf Hansson
2015-04-20 12:09 ` [PATCH V6 02/15] mmc: core: Enable / disable re-tuning Adrian Hunter
2015-04-21 8:59 ` Ulf Hansson
2015-04-21 10:37 ` Adrian Hunter
2015-04-28 13:18 ` [PATCH V7 " Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 03/15] mmc: core: Add support for re-tuning before each request Adrian Hunter
2015-05-04 13:28 ` Ulf Hansson
2015-05-06 8:02 ` Adrian Hunter
2015-05-06 9:45 ` Ulf Hansson
2015-05-06 10:17 ` Adrian Hunter
2015-05-06 10:37 ` Ulf Hansson
2015-04-20 12:09 ` [PATCH V6 04/15] mmc: core: Check re-tuning before retrying Adrian Hunter
2015-05-04 13:30 ` Ulf Hansson
2015-04-20 12:09 ` [PATCH V6 05/15] mmc: core: Hold re-tuning during switch commands Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 06/15] mmc: core: Hold re-tuning during erase commands Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 07/15] mmc: core: Hold re-tuning while bkops ongoing Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 08/15] mmc: mmc: Hold re-tuning if the card is put to sleep Adrian Hunter
2015-04-21 9:42 ` Ulf Hansson
2015-04-21 11:00 ` Adrian Hunter
2015-04-21 11:53 ` Ulf Hansson
2015-04-21 12:26 ` Adrian Hunter
2015-04-21 18:25 ` Arend van Spriel
2015-04-22 7:24 ` Adrian Hunter
2015-04-22 8:30 ` Arend van Spriel
2015-04-22 8:45 ` Ulf Hansson
2015-05-04 13:44 ` Ulf Hansson
2015-05-06 8:39 ` Adrian Hunter
2015-05-06 9:32 ` Ulf Hansson
2015-05-06 10:28 ` Adrian Hunter
2015-05-06 11:36 ` Ulf Hansson
2015-05-06 12:42 ` Adrian Hunter
2015-05-06 13:21 ` Ulf Hansson
2015-05-07 7:49 ` Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 09/15] mmc: core: Separate out the mmc_switch status check so it can be re-used Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 10/15] mmc: core: Add support for HS400 re-tuning Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 11/15] mmc: sdhci: Change to new way of doing re-tuning Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 12/15] mmc: sdhci: Flag re-tuning is needed on CRC or End-Bit errors Adrian Hunter
2015-05-04 13:55 ` Ulf Hansson
2015-05-06 11:09 ` Adrian Hunter
2015-05-06 11:40 ` Ulf Hansson
2015-04-20 12:09 ` [PATCH V6 13/15] mmc: block: Check re-tuning in the recovery path Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 14/15] mmc: block: Retry errored data requests when re-tuning is needed Adrian Hunter
2015-04-20 12:09 ` [PATCH V6 15/15] mmc: core: Don't print reset warning if reset is not supported Adrian Hunter
2015-05-04 10:39 ` [PATCH V6 00/15] mmc: host: Add facility to support re-tuning Adrian Hunter
2015-05-04 13:13 ` Ulf Hansson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1429531796-21987-1-git-send-email-adrian.hunter@intel.com \
--to=adrian.hunter@intel.com \
--cc=aaron.lu@intel.com \
--cc=alcooperx@gmail.com \
--cc=arend@broadcom.com \
--cc=linux-mmc@vger.kernel.org \
--cc=prakity@nvidia.com \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox