mmc: core: Add mmc_retune_hold_now()
authorAdrian Hunter <adrian.hunter@intel.com>
Thu, 10 Aug 2017 12:08:06 +0000 (15:08 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 30 Aug 2017 12:02:01 +0000 (14:02 +0200)
mmc_return_hold() / mmc_retune_release() are used around a group of
commands to prevent re-tuning between the commands. Re-tuning can still
happen before the first command. In some cases, re-tuning must be
prevented entirely. Add mmc_retune_hold_now() for that purpose. It is
added in preparation for CQE support where it will be used by CQE recovery.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/host.c
drivers/mmc/core/host.h

index 1503412f826cd0e0e9ad37a0554b31596a49eb77..ad88deb2e8f3b046838a3539841717951c33a6c6 100644 (file)
@@ -111,6 +111,12 @@ void mmc_retune_hold(struct mmc_host *host)
        host->hold_retune += 1;
 }
 
+void mmc_retune_hold_now(struct mmc_host *host)
+{
+       host->retune_now = 0;
+       host->hold_retune += 1;
+}
+
 void mmc_retune_release(struct mmc_host *host)
 {
        if (host->hold_retune)
index fb6a76a038330fc9234b062d67854a27e27e9f83..77d6f60d1bf96814f921cb2a37b8bb429356bf8d 100644 (file)
@@ -19,6 +19,7 @@ void mmc_unregister_host_class(void);
 void mmc_retune_enable(struct mmc_host *host);
 void mmc_retune_disable(struct mmc_host *host);
 void mmc_retune_hold(struct mmc_host *host);
+void mmc_retune_hold_now(struct mmc_host *host);
 void mmc_retune_release(struct mmc_host *host);
 int mmc_retune(struct mmc_host *host);
 void mmc_retune_pause(struct mmc_host *host);