public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mmc: core: Wait for Vdd to settle on card power off
@ 2025-02-11 21:46 Erick Shepherd
  2025-02-13 10:22 ` Avri Altman
  2025-03-05 18:38 ` Adrian Hunter
  0 siblings, 2 replies; 14+ messages in thread
From: Erick Shepherd @ 2025-02-11 21:46 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mmc, ulf.hansson, adrian.hunter, gratian.crisan,
	Erick Shepherd, Kyle Roeschley, Brad Mouring

The SD spec version 6.0 section 6.4.1.5 requires that Vdd must be
lowered to less than 0.5V for a minimum of 1 ms when powering off a
card. Increase our wait to 15 ms so that voltage has time to drain down
to 0.5V.

Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
Signed-off-by: Brad Mouring <brad.mouring@ni.com>
Signed-off-by: Erick Shepherd <erick.shepherd@ni.com>
---
 drivers/mmc/host/sdhci.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index f4a7733a8ad2..b15a1f107549 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2415,6 +2415,9 @@ void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 	else
 		sdhci_set_power(host, ios->power_mode, ios->vdd);
 
+	if (ios->power_mode == MMC_POWER_OFF)
+		mdelay(15);
+
 	if (host->ops->platform_send_init_74_clocks)
 		host->ops->platform_send_init_74_clocks(host, ios->power_mode);
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread
* [PATCH] mmc: core: Wait for Vdd to settle on card power off
@ 2017-09-21 17:47 Kyle Roeschley
  2017-09-22  9:38 ` Ulf Hansson
  0 siblings, 1 reply; 14+ messages in thread
From: Kyle Roeschley @ 2017-09-21 17:47 UTC (permalink / raw)
  To: ulf.hansson; +Cc: linux-mmc, linux-kernel

The SD spec version 6.0 section 6.4.1.5 requires that Vdd must be
lowered to less than 0.5V for a minimum of 1 ms when powering off a
card. Increase our wait to 10 ms so that voltage has time to drain down
to 0.5V and cards can power off correctly.

Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
---
 drivers/mmc/core/core.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 66c9cf49ad2f..38630246de26 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1679,18 +1679,16 @@ void mmc_power_off(struct mmc_host *host)
 	mmc_set_initial_state(host);
 
 	/*
-	 * Some configurations, such as the 802.11 SDIO card in the OLPC
-	 * XO-1.5, require a short delay after poweroff before the card
-	 * can be successfully turned on again.
+	 * The SD spec requires at least 1 ms with Vdd at less than 0.5 V
+	 * before a card can be re-powered, but we need to wait longer so that
+	 * the voltage has time to drain.
 	 */
-	mmc_delay(1);
+	mmc_delay(10);
 }
 
 void mmc_power_cycle(struct mmc_host *host, u32 ocr)
 {
 	mmc_power_off(host);
-	/* Wait at least 1 ms according to SD spec */
-	mmc_delay(1);
 	mmc_power_up(host, ocr);
 }
 
-- 
2.14.1

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

end of thread, other threads:[~2025-03-14  5:56 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-11 21:46 [PATCH] mmc: core: Wait for Vdd to settle on card power off Erick Shepherd
2025-02-13 10:22 ` Avri Altman
2025-03-05 18:38 ` Adrian Hunter
2025-03-07 17:46   ` Erick Shepherd
2025-03-07 18:53     ` Adrian Hunter
2025-03-07 21:16       ` Erick Shepherd
2025-03-12 12:44         ` Adrian Hunter
2025-03-13  3:35           ` Erick Shepherd
2025-03-13  8:20             ` Adrian Hunter
2025-03-13 20:44               ` Erick Shepherd
2025-03-14  5:56                 ` Adrian Hunter
  -- strict thread matches above, loose matches on Subject: below --
2017-09-21 17:47 Kyle Roeschley
2017-09-22  9:38 ` Ulf Hansson
2017-09-22 13:57   ` Kyle Roeschley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox