Hi Ilias, On 6/5/26 12:31, Ilias Apalodimas wrote:
Andre, this has been assigned to me by mistake in patchwork.
thanks for the heads up, this somehow didn't even make it into my inbox.
I guess Tom can pick it up directly after the reviews etc?
It's fine for me to take it through the sunxi tree. Will reply to the original post for some details. Cheers, Andre
Thanks /Ilias On Wed May 27, 2026 at 12:28 AM EEST, Omar Ivan Fardjoume wrote:Hi, first thanks for everything you do. I was working on reviving a cubieboard4 a80 board and I found and fix two issues that prevented eMMC from working on sun9i-A80 boards: 1. The get_mclk_offset() function used the non-existent Kconfig symbol CONFIG_MACH_SUN9I_A80 instead of CONFIG_MACH_SUN9I, causing the MMC2 clock register to be written at 0x06000090 instead of 0x06000418. This corrupted the CMD2 response and made eMMC completely unresponsive. 2. The legacy (SPL) sunxi_mmc_init() did not include CONFIG_MACH_SUN9I in the 8-bit bus width condition, so MMC2 (eMMC) would only use 4-bit mode in the SPL, which is insufficient for reliable boot. Tested on a Cubieboard4 A80: with both fixes, SPL loads U-Boot proper and boots Debian 12 from eMMC with no SD card present. Signed-off-by: Omar Ivan Fardjoume <[email protected]> --- drivers/mmc/sunxi_mmc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c index 4c5fbf8960f..3d5e7c1a234 100644 --- a/drivers/mmc/sunxi_mmc.c +++ b/drivers/mmc/sunxi_mmc.c @@ -546,7 +546,7 @@ struct mmc *sunxi_mmc_init(int sdc_no) cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34; cfg->host_caps = MMC_MODE_4BIT; - if ((IS_ENABLED(CONFIG_MACH_SUN50I) || IS_ENABLED(CONFIG_MACH_SUN8I) || + if ((IS_ENABLED(CONFIG_MACH_SUN50I) || IS_ENABLED(CONFIG_MACH_SUN8I) || IS_ENABLED(CONFIG_MACH_SUN9I) || IS_ENABLED(CONFIG_SUN50I_GEN_H6) || IS_ENABLED(CONFIG_MACH_SUN55I_A523)) && (sdc_no == 2)) cfg->host_caps = MMC_MODE_8BIT; @@ -663,7 +663,7 @@ static const struct dm_mmc_ops sunxi_mmc_ops = { static unsigned get_mclk_offset(void) { - if (IS_ENABLED(CONFIG_MACH_SUN9I_A80)) + if (IS_ENABLED(CONFIG_MACH_SUN9I)) return 0x410; if (IS_ENABLED(CONFIG_SUN50I_GEN_H6) || IS_ENABLED(CONFIG_SUNXI_GEN_NCAT2))

