LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [RFC] mmc: sdhci: implement light and heavy runtime pm resume
@ 2015-02-05 10:20 Jisheng Zhang
  0 siblings, 0 replies; only message in thread
From: Jisheng Zhang @ 2015-02-05 10:20 UTC (permalink / raw)
  To: Ulf Hansson, Chris Ball, Sebastian Hesselbarth, Thomas Petazzoni,
	linux-mmc, linux-kernel, linux-arm-kernel

Hi all,

Most sdhci_runtime_resume_host() users just gate their clocks in their runtime
suspend implementation, so the sdhci_runtime_resume_host() is too heavy, we only
need to restore interrupts registers.

The change is something as following:

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 0ad412a..9d5bdde 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2856,7 +2856,7 @@ int sdhci_runtime_suspend_host(struct sdhci_host *host)
 }
 EXPORT_SYMBOL_GPL(sdhci_runtime_suspend_host);
 
-int sdhci_runtime_resume_host(struct sdhci_host *host)
+static void sdhci_runtime_resume_reinit(struct sdhci_host *host)
 {
 	unsigned long flags;
 	int host_flags = host->flags;
@@ -2880,6 +2880,15 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
 		sdhci_enable_preset_value(host, true);
 		spin_unlock_irqrestore(&host->lock, flags);
 	}
+}
+
+int sdhci_runtime_resume_host(struct sdhci_host *host, bool power_keeped)
+{
+	unsigned long flags;
+	int host_flags = host->flags;
+
+	if (!power_keeped)
+		sdhci_runtime_resume_reinit(host);
 
 	/* Set the re-tuning expiration flag */
 	if (host->flags & SDHCI_USING_RETUNING_TIMER)


It's ugly, but per my test on marvell BG2Q platforms, this change can improve
the resume latency from 5500us to 11us. Is there any better solution?

Thanks in advance,
Jisheng

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-02-05 10:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-05 10:20 [RFC] mmc: sdhci: implement light and heavy runtime pm resume Jisheng Zhang

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).