From 9614a2014c9384e0a3190171f5ca40eff6eacb9a Mon Sep 17 00:00:00 2001 From: Chen Jiali Date: Thu, 28 Nov 2024 15:15:51 +0800 Subject: [PATCH] fix: add some patch to repair eMMC startup issues --- ...C-frequency-to-improve-compatibility.patch | 18 +++++++ ...mmc-core-phase-in-the-tuning-process.patch | 52 +++++++++++++++++++ ...mmc-meson-gx-limit-to-24MHz.patch.disable} | 0 ...config-reset-board-if-failed-to-boot.patch | 22 ++++++++ 4 files changed, 92 insertions(+) create mode 100644 patch/kernel/archive/meson64-6.6/0018-Reduce-eMMC-frequency-to-improve-compatibility.patch create mode 100644 patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-fix-meson-mmc-core-phase-in-the-tuning-process.patch rename patch/u-boot/v2023.07.02/board_radxa-zero/{001-HACK-mmc-meson-gx-limit-to-24MHz.patch => 001-HACK-mmc-meson-gx-limit-to-24MHz.patch.disable} (100%) create mode 100644 patch/u-boot/v2023.07.02/board_radxa-zero/003-configs-radxa-zero_defconfig-reset-board-if-failed-to-boot.patch diff --git a/patch/kernel/archive/meson64-6.6/0018-Reduce-eMMC-frequency-to-improve-compatibility.patch b/patch/kernel/archive/meson64-6.6/0018-Reduce-eMMC-frequency-to-improve-compatibility.patch new file mode 100644 index 000000000..174932bca --- /dev/null +++ b/patch/kernel/archive/meson64-6.6/0018-Reduce-eMMC-frequency-to-improve-compatibility.patch @@ -0,0 +1,18 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Chen Jiali +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>; diff --git a/patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-fix-meson-mmc-core-phase-in-the-tuning-process.patch b/patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-fix-meson-mmc-core-phase-in-the-tuning-process.patch new file mode 100644 index 000000000..b02d79d7b --- /dev/null +++ b/patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-fix-meson-mmc-core-phase-in-the-tuning-process.patch @@ -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 + diff --git a/patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-mmc-meson-gx-limit-to-24MHz.patch b/patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-mmc-meson-gx-limit-to-24MHz.patch.disable similarity index 100% rename from patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-mmc-meson-gx-limit-to-24MHz.patch rename to patch/u-boot/v2023.07.02/board_radxa-zero/001-HACK-mmc-meson-gx-limit-to-24MHz.patch.disable diff --git a/patch/u-boot/v2023.07.02/board_radxa-zero/003-configs-radxa-zero_defconfig-reset-board-if-failed-to-boot.patch b/patch/u-boot/v2023.07.02/board_radxa-zero/003-configs-radxa-zero_defconfig-reset-board-if-failed-to-boot.patch new file mode 100644 index 000000000..5ca54f820 --- /dev/null +++ b/patch/u-boot/v2023.07.02/board_radxa-zero/003-configs-radxa-zero_defconfig-reset-board-if-failed-to-boot.patch @@ -0,0 +1,22 @@ +From d2e637bf6a433d0a991800e00489ca2535cb8965 Mon Sep 17 00:00:00 2001 +From: ZHANG Yuntian +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 +--- + 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 +--