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 <sven-ola@gmx.de>
This commit is contained in:
Sven-Ola Tuecke 2026-01-20 13:58:33 +01:00 committed by c0rnelius
parent 7c0d37997c
commit 2be970ac84
2 changed files with 10 additions and 0 deletions

View File

@ -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;

View File

@ -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;