Hi Igor,
> With the SD card in a UHS-I mode, vcc_sdio (RK808 LDO4) stays at 1.8 V
> across a warm reset such as a watchdog reset or a panic: the PMIC is
> not reset, and the card supply on ROCK Pi 4 is not switchable. The SD
> I/O domain resets to 3.3 V, and SPL fails to load U-Boot from the card:
>
> mmc_load_image_raw_sector: mmc block read error
>
> Enable the RK8XX regulator and Rockchip IO-domain drivers in SPL, and
> drop regulator-always-on and regulator-boot-on from vcc_sdio, as these
> commits do for the NanoPi 4 boards:
Shouldn't the dropping of regulator-always-on and regulator-boot-on go
upstream into the DT proper? That change seems auxiliary to the fix
for the voltage reset.
> commit 2abd7fff9ebf ("rockchip: rk3399-nanopi-4: Allow MMC driver to
> control SD regulators")
> commit 210ab4f60df8 ("rockchip: rk3399-nanopi-4: Enable IO-domain driver in
> SPL")
>
> Without the boot-on flag U-Boot leaves vcc_sdio at its current voltage,
> and the I/O-domain driver sets the I/O domain to match it.
>
> Signed-off-by: Igor Velkov <[email protected]>
> ---
> Tested on ROCK Pi 4A booting U-Boot from SD, with Linux running the
> card in SDR104: sysrq-b 4/4, panic 2/2 and watchdog reset 2/2 boot,
> where SPL without this change stops at "mmc block read error". With
> the card left at 3.0 V (non-UHS DT) cold boot, reboot, sysrq-b and
> watchdog reset still boot in high-speed mode. Not tested on ROCK Pi 4C
> and ROCK 4SE, whose defconfigs and dtsi are changed the same way.
> ---
> arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi | 14 ++++++++++++++
> configs/rock-4se-rk3399_defconfig | 7 +++++++
> configs/rock-pi-4-rk3399_defconfig | 7 +++++++
> configs/rock-pi-4c-rk3399_defconfig | 7 +++++++
> 4 files changed, 35 insertions(+)
>
> diff --git a/arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
> b/arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
> index 4861574636e..7a15f613c99 100644
> --- a/arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
> +++ b/arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
> @@ -14,12 +14,26 @@
> };
> };
>
> +&i2c0_xfer {
> + bootph-pre-ram;
> +};
> +
> +&io_domains {
> + bootph-pre-ram;
> +};
> +
> &sdhci {
> cap-mmc-highspeed;
> mmc-ddr-1_8v;
> mmc-hs200-1_8v;
> };
>
> +&vcc_sdio {
> + bootph-pre-ram;
> + /delete-property/ regulator-always-on;
> + /delete-property/ regulator-boot-on;
> +};
> +
> &vdd_log {
> regulator-init-microvolt = <950000>;
> };
> diff --git a/configs/rock-4se-rk3399_defconfig
> b/configs/rock-4se-rk3399_defconfig
> index 7f22aede912..dfec68ac4c0 100644
> --- a/configs/rock-4se-rk3399_defconfig
> +++ b/configs/rock-4se-rk3399_defconfig
> @@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-rock-4se"
> CONFIG_DM_RESET=y
> CONFIG_ROCKCHIP_RK3399=y
> CONFIG_ROCKCHIP_SPI_IMAGE=y
> +CONFIG_SPL_DRIVERS_MISC=y
> CONFIG_TARGET_ROCKPI4_RK3399=y
> CONFIG_SYS_LOAD_ADDR=0x800800
> CONFIG_SF_DEFAULT_BUS=1
> @@ -25,6 +26,8 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4se.dtb"
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_MAX_SIZE=0x40000
> # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> +CONFIG_SPL_I2C=y
> +CONFIG_SPL_POWER=y
> CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000
> CONFIG_TPL=y
> @@ -52,6 +55,7 @@ CONFIG_ROCKCHIP_GPIO=y
> CONFIG_SYS_I2C_ROCKCHIP=y
> CONFIG_LED=y
> CONFIG_LED_GPIO=y
> +CONFIG_SPL_ROCKCHIP_IODOMAIN=y
> CONFIG_MMC_DW=y
> CONFIG_MMC_DW_ROCKCHIP=y
> CONFIG_MMC_SDHCI=y
> @@ -70,8 +74,11 @@ CONFIG_NVME_PCI=y
> CONFIG_PHY_ROCKCHIP_INNO_USB2=y
> CONFIG_PHY_ROCKCHIP_TYPEC=y
> CONFIG_PMIC_RK8XX=y
> +CONFIG_SPL_PMIC_RK8XX=y
> +CONFIG_SPL_DM_REGULATOR=y
> CONFIG_REGULATOR_PWM=y
> CONFIG_REGULATOR_RK8XX=y
> +CONFIG_SPL_REGULATOR_RK8XX=y
> CONFIG_PWM_ROCKCHIP=y
> CONFIG_RAM_ROCKCHIP_LPDDR4=y
> CONFIG_SCSI=y
> diff --git a/configs/rock-pi-4-rk3399_defconfig
> b/configs/rock-pi-4-rk3399_defconfig
> index e5c9072c27f..fe120db9b8c 100644
> --- a/configs/rock-pi-4-rk3399_defconfig
> +++ b/configs/rock-pi-4-rk3399_defconfig
> @@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-rock-pi-4a"
> CONFIG_DM_RESET=y
> CONFIG_ROCKCHIP_RK3399=y
> CONFIG_ROCKCHIP_SPI_IMAGE=y
> +CONFIG_SPL_DRIVERS_MISC=y
> CONFIG_TARGET_ROCKPI4_RK3399=y
> CONFIG_SYS_LOAD_ADDR=0x800800
> CONFIG_SF_DEFAULT_BUS=1
> @@ -25,6 +26,8 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4a.dtb"
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_MAX_SIZE=0x40000
> # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> +CONFIG_SPL_I2C=y
> +CONFIG_SPL_POWER=y
> CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000
> CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
> @@ -53,6 +56,7 @@ CONFIG_ROCKCHIP_GPIO=y
> CONFIG_SYS_I2C_ROCKCHIP=y
> CONFIG_LED=y
> CONFIG_LED_GPIO=y
> +CONFIG_SPL_ROCKCHIP_IODOMAIN=y
> CONFIG_MMC_DW=y
> CONFIG_MMC_DW_ROCKCHIP=y
> CONFIG_MMC_SDHCI=y
> @@ -71,8 +75,11 @@ CONFIG_NVME_PCI=y
> CONFIG_PHY_ROCKCHIP_INNO_USB2=y
> CONFIG_PHY_ROCKCHIP_TYPEC=y
> CONFIG_PMIC_RK8XX=y
> +CONFIG_SPL_PMIC_RK8XX=y
> +CONFIG_SPL_DM_REGULATOR=y
> CONFIG_REGULATOR_PWM=y
> CONFIG_REGULATOR_RK8XX=y
> +CONFIG_SPL_REGULATOR_RK8XX=y
> CONFIG_PWM_ROCKCHIP=y
> CONFIG_RAM_ROCKCHIP_LPDDR4=y
> CONFIG_SCSI=y
> diff --git a/configs/rock-pi-4c-rk3399_defconfig
> b/configs/rock-pi-4c-rk3399_defconfig
> index 4be7b0f8130..1a37190d077 100644
> --- a/configs/rock-pi-4c-rk3399_defconfig
> +++ b/configs/rock-pi-4c-rk3399_defconfig
> @@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-rock-pi-4c"
> CONFIG_DM_RESET=y
> CONFIG_ROCKCHIP_RK3399=y
> CONFIG_ROCKCHIP_SPI_IMAGE=y
> +CONFIG_SPL_DRIVERS_MISC=y
> CONFIG_TARGET_ROCKPI4_RK3399=y
> CONFIG_SYS_LOAD_ADDR=0x800800
> CONFIG_SF_DEFAULT_BUS=1
> @@ -25,6 +26,8 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4c.dtb"
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_MAX_SIZE=0x40000
> # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> +CONFIG_SPL_I2C=y
> +CONFIG_SPL_POWER=y
> CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000
> CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
> @@ -53,6 +56,7 @@ CONFIG_ROCKCHIP_GPIO=y
> CONFIG_SYS_I2C_ROCKCHIP=y
> CONFIG_LED=y
> CONFIG_LED_GPIO=y
> +CONFIG_SPL_ROCKCHIP_IODOMAIN=y
> CONFIG_MMC_DW=y
> CONFIG_MMC_DW_ROCKCHIP=y
> CONFIG_MMC_SDHCI=y
> @@ -71,8 +75,11 @@ CONFIG_NVME_PCI=y
> CONFIG_PHY_ROCKCHIP_INNO_USB2=y
> CONFIG_PHY_ROCKCHIP_TYPEC=y
> CONFIG_PMIC_RK8XX=y
> +CONFIG_SPL_PMIC_RK8XX=y
> +CONFIG_SPL_DM_REGULATOR=y
> CONFIG_REGULATOR_PWM=y
> CONFIG_REGULATOR_RK8XX=y
> +CONFIG_SPL_REGULATOR_RK8XX=y
> CONFIG_PWM_ROCKCHIP=y
> CONFIG_RAM_ROCKCHIP_LPDDR4=y
> CONFIG_SCSI=y
>
> ---
> base-commit: ab4dc5aacf957835c295b59ef2dd28281839cb20
> change-id: 20261103-b4-rock-pi-4-spl-iodomain-f6230f4d5eac
>
> Best regards,
> --
> Igor Velkov <[email protected]>
>
>