On 2025/10/31 17:40, Tianling Shen wrote:
On 2025/10/31 3:41, Jonas Karlman wrote:
Hi Tianling,
On 10/30/2025 7:12 PM, Tianling Shen wrote:
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`:
<snip>
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?
Interesting information and thanks for testing!
Without REGULATOR_PWM=y the cpu and logic regulators will keep their
reset
init values instead of U-Boot trying to configure these pwm regulators.
The generic-rk3528 target does not include information about any of these
regulators so they would keep using the reset init values.
There could be two issues related to this, first both the pwm regulator
and rk pwm driver are not fully aligned with Linux and round values a
little bit different. I have some local work-in-progress patches that I
should complete and send out to fix this discrepancy.
The second issue could be that the logic regulator should be configured
with a higher regulator-init-microvolt value so that U-Boot do not
re-configure the regulator with a lower voltage than it has after reset.
Did your testing also include the "mmc: rockchip_sdhci: Set xx_TAP_VALUE
for RK3528" [1] patch?
Thank you for the quick reply!
I tested this patch and it works like a charm (30 times soft reboot + 10
times cold boot).
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
I will make some runtime test on my E20C using these as a base and see
if I can replicate a similar issue.
I have also pushed my local pwm-regulator/rk-pwm relates patches to [2],
they need some re-work before being ready to be sent out.
I have tested this patchset, and the eMMC works as well even without the
rockchip_sdhci patch/commit applied.
I will make more tests these days and report then ;)
After 300 times soft reboot/reset, 70 times cold boot and 30 times mmc
write + erase operations, the eMMC works very stable with the
pwm-regulator/rk-pwm patches (with commit e34dd9146b29 "mmc:
rockchip_sdhci: Set xx_TAP_VALUE for RK3528" reverted).
For the pwm series:
Tested-by: Tianling Shen <[email protected]>
Thanks,
Tianling.
Many thanks again!
Thanks,
Tianling.
[1] https://lore.kernel.org/u-boot/20250714203410.1782783-1-
[email protected]/
[2] https://source.denx.de/u-boot/contributors/kwiboo/u-boot/-/
commits/rk3528
Regards,
Jonas
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;