fix: add some patch to repair eMMC startup issues

This commit is contained in:
Chen Jiali
2024-11-28 15:15:51 +08:00
committed by Igor
parent 3839eaa713
commit 9614a2014c
4 changed files with 92 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Chen Jiali <ChenJiali@radxa.com>
Date: Tue, 23 Apr 2024 16:05:42 +0800
Subject: [PATCH 1/1] Reduce eMMC frequency to improve compatibility
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
index cf0a9be83..29ace14b4 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
@@ -358,7 +358,7 @@ &sd_emmc_c {
cap-mmc-highspeed;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
- max-frequency = <200000000>;
+ max-frequency = <150000000>;
disable-wp;
mmc-pwrseq = <&emmc_pwrseq>;

View File

@@ -0,0 +1,52 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ZHANG Yuntian <95260730+RadxaYuntian@users.noreply.github.com>
Date: Mon, 21 Aug 2023 15:28:09 +0800
Subject: HACK: fix meson mmc core phase in the tuning process
This is needed to use with Samsung eMMC module.
Tested with Samsung, Foresee, and YMTC eMMC modules on Radxa Zero.
Idea taken from the following patch and comments:
https://patchwork.ozlabs.org/project/uboot/patch/20191126211206.4537-2-linux.amoon@gmail.com/
---
drivers/mmc/meson_gx_mmc.c | 5 +++--
drivers/mmc/meson_gx_mmc.h | 4 ++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/meson_gx_mmc.c b/drivers/mmc/meson_gx_mmc.c
index 111111111111..222222222222 100644
--- a/drivers/mmc/meson_gx_mmc.c
+++ b/drivers/mmc/meson_gx_mmc.c
@@ -71,10 +71,11 @@ static void meson_mmc_config_clock(struct mmc *mmc)
if (meson_gx_mmc_is_compatible(mmc->dev, MMC_COMPATIBLE_SM1))
meson_mmc_clk |= CLK_CO_PHASE_270;
else
- meson_mmc_clk |= CLK_CO_PHASE_180;
+ meson_mmc_clk |= CLK_CO_PHASE_090;
- /* 180 phase tx clock */
+ /* 000 phase tx & rx clock */
meson_mmc_clk |= CLK_TX_PHASE_000;
+ meson_mmc_clk |= CLK_RX_PHASE_000;
/* clock settings */
meson_mmc_clk |= clk_src;
diff --git a/drivers/mmc/meson_gx_mmc.h b/drivers/mmc/meson_gx_mmc.h
index 111111111111..222222222222 100644
--- a/drivers/mmc/meson_gx_mmc.h
+++ b/drivers/mmc/meson_gx_mmc.h
@@ -33,6 +33,10 @@ enum meson_gx_mmc_compatible {
#define CLK_TX_PHASE_090 (1 << 10)
#define CLK_TX_PHASE_180 (2 << 10)
#define CLK_TX_PHASE_270 (3 << 10)
+#define CLK_RX_PHASE_000 (0 << 12)
+#define CLK_RX_PHASE_090 (1 << 12)
+#define CLK_RX_PHASE_180 (2 << 12)
+#define CLK_RX_PHASE_270 (3 << 12)
#define CLK_ALWAYS_ON BIT(24)
#define MESON_SD_EMMC_CFG 0x44
--
Armbian

View File

@@ -0,0 +1,22 @@
From d2e637bf6a433d0a991800e00489ca2535cb8965 Mon Sep 17 00:00:00 2001
From: ZHANG Yuntian <yt@radxa.com>
Date: Thu, 27 Jul 2023 15:58:56 +0800
Subject: configs: radxa-zero_defconfig: reset board if failed to boot
Signed-off-by: ZHANG Yuntian <yt@radxa.com>
---
configs/radxa-zero_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/configs/radxa-zero_defconfig b/configs/radxa-zero_defconfig
index 111111111111..222222222222 100644
--- a/configs/radxa-zero_defconfig
+++ b/configs/radxa-zero_defconfig
@@ -1,5 +1,6 @@
CONFIG_ARM=y
CONFIG_ARCH_MESON=y
+CONFIG_BOOTCOMMAND="bootflow scan; run distro_bootcmd; echo Boot failed. Reset in 3 seconds...; sleep 3; reset;"
CONFIG_TEXT_BASE=0x01000000
CONFIG_NR_DRAM_BANKS=1
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
--