mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-12-15 19:09:46 +00:00
132 lines
4.5 KiB
Diff
132 lines
4.5 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
|
|
@@ -1358,6 +1358,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;
|
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Alex Bee <knaerzche@gmail.com>
|
|
Date: Wed, 23 Jun 2021 16:59:18 +0200
|
|
Subject: [PATCH] arm64: dts: rockchip: Add sdmmc_ext for RK3328
|
|
|
|
RK3328 SoC has a fourth mmc controller called SDMMC_EXT. Some
|
|
boards have sdio wifi connected to it. In order to use it
|
|
one would have to add the pinctrls from sdmmc0ext group which
|
|
is done on board level.
|
|
|
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 14 ++++++++++++++
|
|
1 file changed, 14 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 49ae15708a0b..60348d517efb 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -993,6 +993,20 @@ usb_host0_ohci: usb@ff5d0000 {
|
|
status = "disabled";
|
|
};
|
|
|
|
+ sdmmc_ext: mmc@ff5f0000 {
|
|
+ compatible = "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc";
|
|
+ reg = <0x0 0xff5f0000 0x0 0x4000>;
|
|
+ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ clocks = <&cru HCLK_SDMMC_EXT>, <&cru SCLK_SDMMC_EXT>,
|
|
+ <&cru SCLK_SDMMC_EXT_DRV>, <&cru SCLK_SDMMC_EXT_SAMPLE>;
|
|
+ clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
+ fifo-depth = <0x100>;
|
|
+ max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_SDMMCEXT>;
|
|
+ reset-names = "reset";
|
|
+ status = "disabled";
|
|
+ };
|
|
+
|
|
usbdrd3: usb@ff600000 {
|
|
compatible = "rockchip,rk3328-dwc3", "snps,dwc3";
|
|
reg = <0x0 0xff600000 0x0 0x100000>;
|
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Alex Bee <knaerzche@gmail.com>
|
|
Date: Wed, 23 Jun 2021 17:02:08 +0200
|
|
Subject: [PATCH] arm64: dts: rockchip: Add sdmmc/sdio/emmc reset controls for
|
|
RK3328
|
|
|
|
The DW MCI controller driver will use them to reset the IP block before
|
|
initialisation.
|
|
|
|
Fixes: d717f7352ec6 ("arm64: dts: rockchip: add sdmmc/sdio/emmc nodes for RK3328 SoCs")
|
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 60348d517efb..d7e44d174d7b 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -871,6 +871,8 @@ sdmmc: mmc@ff500000 {
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_MMC0>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -883,6 +885,8 @@ sdio: mmc@ff510000 {
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_SDIO>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -895,6 +899,8 @@ emmc: mmc@ff520000 {
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_EMMC>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|