public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Tianling Shen <cnsztl@gmail.com>
To: Jonas Karlman <jonas@kwiboo.se>,
	Kever Yang <kever.yang@rock-chips.com>,
	Simon Glass <sjg@chromium.org>,
	Philipp Tomsich <philipp.tomsich@vrull.eu>,
	Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de
Subject: Re: [PATCH] arm: dts: rockchip: Fix eMMC write on RK3528
Date: Fri, 31 Oct 2025 02:12:10 +0800	[thread overview]
Message-ID: <6ae3eab1-3208-4317-8ae2-5f5cac1e2dfe@gmail.com> (raw)
In-Reply-To: <20250613224343.3521820-1-jonas@kwiboo.se>

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 'mmc@ffc30000.bootdev':
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 'mmc@ffbf0000.bootdev':
  ** 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 'ethernet@ffbe0000.bootdev':
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 <jonas@kwiboo.se>
> ---
> 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;


  parent reply	other threads:[~2025-10-30 18:12 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-13 22:43 [PATCH] arm: dts: rockchip: Fix eMMC write on RK3528 Jonas Karlman
2025-06-15 18:02 ` Tom Rini
2025-10-30 18:12 ` Tianling Shen [this message]
2025-10-30 19:41   ` Jonas Karlman
2025-10-31  9:40     ` Tianling Shen
2025-11-06  9:22       ` Tianling Shen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6ae3eab1-3208-4317-8ae2-5f5cac1e2dfe@gmail.com \
    --to=cnsztl@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kever.yang@rock-chips.com \
    --cc=philipp.tomsich@vrull.eu \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox