Issue with mmc_power_on() and reference counter of regulator
Jonas Karlman
jonas at kwiboo.se
Sat Sep 2 15:45:16 CEST 2023
Hi,
On 2023-09-02 13:35, Kenta Sato wrote:
> Hi,
>
> I am using the FriendlyElec NanoPi R4S board.
> When I updated U-Boot to a recent version (0fe0395922), it failed to
> boot from MMC. Here is the log:
>
> ================================
> U-Boot TPL 2023.10-rc3 (Sep 02 2023 - 08:21:08)
> lpddr4_set_rate: change freq to 400MHz 0, 1
> Channel 0: LPDDR4, 400MHz
> BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
> Channel 1: LPDDR4, 400MHz
> BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
> 256B stride
> lpddr4_set_rate: change freq to 800MHz 1, 0
> Trying to boot from BOOTROM
> Returning to boot ROM...
>
> U-Boot SPL 2023.10-rc3 (Sep 02 2023 - 08:21:08 +0000)
> Trying to boot from MMC1
> spl_load_fit_image: Skip load 'atf-5': image size is 0!
> NOTICE: BL31: v2.9(release):
> NOTICE: BL31: Built : 08:19:59, Sep 2 2023
>
>
> U-Boot 2023.10-rc3 (Sep 02 2023 - 08:21:08 +0000)
>
> SoC: Rockchip rk3399
> Reset cause: POR
> Model: FriendlyElec NanoPi R4S
> DRAM: 4 GiB (effective 3.9 GiB)
> PMIC: RK808
> Core: 264 devices, 23 uclasses, devicetree: separate
> MMC: mmc at fe320000: 1
> Loading Environment from nowhere... OK
> In: serial,usbkbd
> Out: serial,vidconsole
> Err: serial,vidconsole
> Model: FriendlyElec NanoPi R4S
> Net:
> Error: ethernet at fe300000 address not set.
> No ethernet found.
>
> Hit any key to stop autoboot: 0
> Error enabling VMMC supply : -114
> Error enabling VMMC supply : -114
> Error enabling VMMC supply : -114
> Error enabling VMMC supply : -114
> Error enabling VMMC supply : -114
> Error enabling VMMC supply : -114
> ================================
>
> Does anyone know how to fix the issue?
>
> I looked into commit logs and the mailing list so far, and I found the
> below commit that adds the reference counter to the regulator. I could
> remove the above error by reverting this change. Of course, it should
> not be the proper way.
> Maybe we could replace regulator_set_enable() in mmc_power_on() by
> regulator_set_enable_if_allowed(). However, I have no confidence about
> it as I'm not familiar with the U-Boot source code.
I sent patches to fix such situation back in July, see [1]. Those
patches was merged into next, but should probably have gone into master.
Please try next, and/or apply patches at [1] and report back result.
[1] https://patchwork.ozlabs.org/project/uboot/list/?series=364753&state=*
Regards,
Jonas
>
> ================================
> commit 4fcba5d556b4224ad65a249801e4c9594d1054e8
> Author: Eugen Hristev <eugen.hristev at collabora.com>
> Date: Wed Apr 19 16:45:24 2023 +0300
>
> regulator: implement basic reference counter
>
> Some devices share a regulator supply, when the first one will request
> regulator disable, the second device will have it's supply cut off before
> graciously shutting down. Hence there will be timeouts and other failed
> operations.
> Implement a reference counter mechanism similar with what is done in
> Linux, to keep track of enable and disable requests, and only disable the
> regulator when the last of the consumers has requested shutdown.
>
> Signed-off-by: Eugen Hristev <eugen.hristev at collabora.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
> ================================
>
> Any help would be greatly appreciated.
> Thank you!
>
> Kenta Sato
More information about the U-Boot
mailing list