From 2be970ac84032f425a5676264df18cac331a8c8a Mon Sep 17 00:00:00 2001 From: Sven-Ola Tuecke Date: Tue, 20 Jan 2026 13:58:33 +0100 Subject: [PATCH] OrangePi-RV2: Speedup for fast SD cards with the Linux MMC kernel driver. Disable U-Boot CONFIG_MMC_UHS_SUPPORT otherwise a fast SD card does not report "1.8 Volt mode switch possible" on kernel init which in turn does not enable SDR104 for my SDXC card. Fast mode ok is visible in the kernel log after booting from SD card: root@orangepirv2:~# dmesg |grep mmc [ 2.198816] mmc0: SDHCI controller on d4280000.sdh [d4280000.sdh] using ADMA [ 2.224576] mmc1: SDHCI controller on d4280800.sdh [d4280800.sdh] using ADMA [ 2.272657] mmc0: set tx_delaycode: 159 [ 2.273950] mmc0: pass window [6 68) [ 2.276301] mmc0: pass window [72 198) [ 2.277591] mmc0: pass window [219 255) [ 2.277599] mmc0: tuning done, use the firstly delay_code:134 [ 2.277611] mmc0: new ultra high speed SDR104 SDXC card at address b36b With UHS already enabled in u-boot, no tuning and no SDR104 mode is switched on in the Linux kernel. Seems to be a side effect of an un-complete mmc_deinit() in u-boot/driver/mmc/mmc.c. With MMC_UHS_SUPPORT disabled, the SD card does report SD_ROCR_S18A with then leads to enter spacemit_sdhci_execute_sw_tuning() and the subsequent switch to SDK104 or probably other 1.8 Volt modes is fine. This is at least true for my OrangePi RV2 board. Signed-off-by: Sven-Ola Tuecke --- config/boards/orangepir2s.wip | 5 +++++ config/boards/orangepirv2.wip | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/config/boards/orangepir2s.wip b/config/boards/orangepir2s.wip index 0386a40386..0767aa5064 100644 --- a/config/boards/orangepir2s.wip +++ b/config/boards/orangepir2s.wip @@ -10,6 +10,11 @@ SRC_EXTLINUX="yes" SRC_CMDLINE="earlycon=sbi console=tty1 console=ttyS0,115200 loglevel=1" PACKAGE_LIST_BOARD="" +function post_config_uboot_target__extra_configs_for_orangepi() { + display_alert "$BOARD" "disable MMC UHS support to speed up MMC under Linux" "info" + run_host_command_logged scripts/config --disable CONFIG_MMC_UHS_SUPPORT +} + write_uboot_platform_mtd() { if [ -b /dev/mtdblock0 ]; then dd if="${1}/bootinfo_spinor.bin" of=/dev/mtdblock0 bs=65536 status=none; diff --git a/config/boards/orangepirv2.wip b/config/boards/orangepirv2.wip index 0af75740c0..fb36a89955 100644 --- a/config/boards/orangepirv2.wip +++ b/config/boards/orangepirv2.wip @@ -16,6 +16,11 @@ case "${BRANCH}" in edge) enable_extension "bcmdhd-spacemit" ;;esac +function post_config_uboot_target__extra_configs_for_orangepi() { + display_alert "$BOARD" "disable MMC UHS support to speed up MMC under Linux" "info" + run_host_command_logged scripts/config --disable CONFIG_MMC_UHS_SUPPORT +} + write_uboot_platform_mtd() { if [ -b /dev/mtdblock0 ]; then dd if="${1}/bootinfo_spinor.bin" of=/dev/mtdblock0 bs=65536 status=none;