Hi Jonas, On 2025/6/14 6:43, Jonas Karlman wrote:
Writing to eMMC on RK3528 is affected with the same or a similar issue as on RK3588, where eMMC must init to HS200 at least once to fully work.Trying to write u-boot-rockchip.bin to eMMC fails with: => mmc write $fileaddr 40 5000 MMC write: dev # 0, block # 64, count 20480 ... mmc write failed 0 blocks written: ERROR For U-Boot to enable HS200 mode the mmc-hs200-1_8v prop must be defined in the device tree. Linux does not seem to be affected and is able to detect and use HS200 without this prop. Enable use of HS200 and fix eMMC write on RK3528 by adding the missing mmc-hs200-1_8v prop for affected boards: => mmc write $fileaddr 40 5000 MMC write: dev # 0, block # 64, count 20480 ... 20480 blocks written: OK
Sorry for the noise.I recently got an E20C board, and I ran into a very stange issue, the U-Boot throw errors with any mmc r/w operation, like `boot` or `mmc erase`:
``` => boot Scanning for bootflows in all bootdevs Seq Method State Uclass Part Name Filename--- ----------- ------ -------- ---- ------------------------ ----------------
Scanning global bootmeth 'efi_mgr': ** fs_devread read error - block ** fs_devread read error - block Card did not respond to voltage select! : -110 Cannot persist EFI variables without system partition 0 efi_mgr ready (none) 0 <NULL> ** Booting bootflow '<NULL>' with efi_mgr Loading Boot0000 'mmc 0' failed EFI boot manager: Cannot load any image Boot failed (err=-14) Scanning bootdev '[email protected]': Card did not respond to voltage select! : -110 Card did not respond to voltage select! : -110 Card did not respond to voltage select! : -110 Card did not respond to voltage select! : -110 Scanning bootdev '[email protected]': ** fs_devread read error - block ** fs_devread read error - block ** fs_devread read error - block Unknown uclass 'nvme' in label Unknown uclass 'scsi' in label No USB controllers found Scanning bootdev '[email protected]':ethernet@ffbe0000 Waiting for PHY auto negotiation to complete..user interrupt!
phy_startup() failed: -4 FAILED: -4 BOOTP broadcast 1 => mmc read $loadaddr 0x40 0x4000 MMC read: dev # 0, block # 64, count 16384 ... 0 blocks read: ERROR => mmc erase 0x40 0x4000 MMC erase: dev # 0, block # 64, count 16384 ... mmc erase failed 0 blocks erased: ERROR => mmc part Partition Map for mmc device 0 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type ** Can't read partition table on 0:0 ** ``` By checking the mmc information: ``` => mmc info Device: mmc@ffbf0000 Manufacturer ID: ef OEM: 0 Name: TLi16G Bus Speed: 200000000 Mode: HS200 (200MHz) Rd Block Len: 512 MMC version 5.1 High Capacity: Yes Capacity: 14.7 GiB Bus Width: 4-bit Erase Group Size: 512 KiB HC WP Group Size: 128 MiB User Capacity: 14.7 GiB WRREL Boot Capacity: 4 MiB ENH RPMB Capacity: 4 MiB ENH ```I found the bus width is not corrent, and no "Boot area X is not write protected" tip.
This is the working `mmc info` output: ``` Device: mmc@ffbf0000 Manufacturer ID: ef OEM: 0 Name: TLi16G Bus Speed: 200000000 Mode: HS200 (200MHz) Rd Block Len: 512 MMC version 5.1 High Capacity: Yes Capacity: 14.7 GiB Bus Width: 8-bit Erase Group Size: 512 KiB HC WP Group Size: 128 MiB User Capacity: 14.7 GiB WRREL Boot Capacity: 4 MiB ENH RPMB Capacity: 4 MiB ENH Boot area 0 is not write protected Boot area 1 is not write protected ``` I tried to use the generic-rk3528 configuration, and it seems to work.After making some tests (about 50 times reboot/reset), I found the eMMC works fine if `CONFIG_REGULATOR_PWM=y` is disabled.
This is a bit weird. Maybe disabling this option just hides the real issue?
Here's the build information:
U-Boot commit: 4cad9faf8d28 ("MAINTAINERS: update my email address")
rkbin commit: 74213af1e952 ("rv1126b: bl31: update version to v1.07")
Build command:
make CROSS_COMPILE=aarch64-linux-musl-
BL31=../rkbin/bin/rk35/rk3528_bl31_v1.20.elf
ROCKCHIP_TPL=../rkbin/bin/rk35/rk3528_ddr_1056MHz_v1.11.bin
Any help will be greatly appreciated! Thanks, Tianling.
Fixes: b112a44531cb ("board: rockchip: Add minimal generic RK3528 board") Fixes: ccbddf645310 ("board: rockchip: Add Radxa E20C") Signed-off-by: Jonas Karlman <[email protected]> --- Kever, Tom: Please consider this for the v2025.07 release as support for RK3528 was added in v2025.07-rc1. --- arch/arm/dts/rk3528-generic.dts | 1 + arch/arm/dts/rk3528-radxa-e20c-u-boot.dtsi | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/arm/dts/rk3528-generic.dts b/arch/arm/dts/rk3528-generic.dts index 792d3e04a4cb..3f6f0bed108d 100644 --- a/arch/arm/dts/rk3528-generic.dts +++ b/arch/arm/dts/rk3528-generic.dts @@ -18,6 +18,7 @@ &sdhci { bus-width = <8>; cap-mmc-highspeed; + mmc-hs200-1_8v; no-sd; no-sdio; non-removable; diff --git a/arch/arm/dts/rk3528-radxa-e20c-u-boot.dtsi b/arch/arm/dts/rk3528-radxa-e20c-u-boot.dtsi index 9c2f03a786cf..1372d8f1e38a 100644 --- a/arch/arm/dts/rk3528-radxa-e20c-u-boot.dtsi +++ b/arch/arm/dts/rk3528-radxa-e20c-u-boot.dtsi @@ -2,6 +2,10 @@#include "rk3528-u-boot.dtsi" +&sdhci {+ mmc-hs200-1_8v; +}; + &sdmmc { bus-width = <4>; cap-mmc-highspeed;

