mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-02-01 21:42:32 +00:00
45 lines
1.6 KiB
Diff
45 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 17 Feb 2019 22:14:38 +0000
|
|
Subject: [PATCH] mmc: core: set initial signal voltage on power off
|
|
|
|
Some boards have SD card connectors where the power rail cannot be switched
|
|
off by the driver. If the card has not been power cycled, it may still be
|
|
using 1.8V signaling after a warm re-boot. Bootroms expecting 3.3V signaling
|
|
will fail to boot from a UHS card that continue to use 1.8V signaling.
|
|
|
|
Set initial signal voltage in mmc_power_off() to allow re-boot to function.
|
|
|
|
This fixes re-boot with UHS cards on Asus Tinker Board (Rockchip RK3288),
|
|
same issue have been seen on some Rockchip RK3399 boards.
|
|
|
|
I am sending this as a RFC because I have no insights into SD/MMC subsystem,
|
|
this change fix a re-boot issue on my boards and does not break emmc/sdio.
|
|
Is this an acceptable workaround? Any advice is appreciated.
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/mmc/core/core.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
|
index ef53a2578824..d4c53074154a 100644
|
|
--- a/drivers/mmc/core/core.c
|
|
+++ b/drivers/mmc/core/core.c
|
|
@@ -1368,6 +1368,14 @@ void mmc_power_off(struct mmc_host *host)
|
|
if (host->ios.power_mode == MMC_POWER_OFF)
|
|
return;
|
|
|
|
+ mmc_set_initial_signal_voltage(host);
|
|
+
|
|
+ /*
|
|
+ * This delay should be sufficient to allow the power supply
|
|
+ * to reach the minimum voltage.
|
|
+ */
|
|
+ mmc_delay(host->ios.power_delay_ms);
|
|
+
|
|
mmc_pwrseq_power_off(host);
|
|
|
|
host->ios.clock = 0;
|
|
|