summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/dts/rk3399-u-boot.dtsi1
-rw-r--r--arch/arm/dts/rk3588s-u-boot.dtsi1
-rw-r--r--configs/rock5b-rk3588_defconfig1
-rw-r--r--drivers/mmc/rockchip_sdhci.c8
4 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index e677ae678da..3423b882c43 100644
--- a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -120,6 +120,7 @@
&sdhci {
max-frequency = <200000000>;
bootph-all;
+ u-boot,spl-fifo-mode;
};
&sdmmc {
diff --git a/arch/arm/dts/rk3588s-u-boot.dtsi b/arch/arm/dts/rk3588s-u-boot.dtsi
index cd7e6cb50ee..922cae3f092 100644
--- a/arch/arm/dts/rk3588s-u-boot.dtsi
+++ b/arch/arm/dts/rk3588s-u-boot.dtsi
@@ -153,6 +153,7 @@
&sdhci {
bootph-pre-ram;
+ u-boot,spl-fifo-mode;
};
&uart2 {
diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig
index c57de5a5be0..fc76d9347db 100644
--- a/configs/rock5b-rk3588_defconfig
+++ b/configs/rock5b-rk3588_defconfig
@@ -60,7 +60,6 @@ CONFIG_MMC_DW=y
CONFIG_MMC_DW_ROCKCHIP=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_SDMA=y
-# CONFIG_SPL_MMC_SDHCI_SDMA is not set
CONFIG_MMC_SDHCI_ROCKCHIP=y
CONFIG_ETH_DESIGNWARE=y
CONFIG_GMAC_ROCKCHIP=y
diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c
index 8e4a158049a..285332d9f4f 100644
--- a/drivers/mmc/rockchip_sdhci.c
+++ b/drivers/mmc/rockchip_sdhci.c
@@ -590,6 +590,14 @@ static int rockchip_sdhci_probe(struct udevice *dev)
return ret;
/*
+ * Disable use of DMA and force use of PIO mode in SPL to fix an issue
+ * where loading part of TF-A into SRAM using DMA silently fails.
+ */
+ if (IS_ENABLED(CONFIG_SPL_BUILD) &&
+ dev_read_bool(dev, "u-boot,spl-fifo-mode"))
+ host->flags &= ~USE_DMA;
+
+ /*
* Reading more than 4 blocks with a single CMD18 command in PIO mode
* triggers Data End Bit Error on RK3568 and RK3588. Limit to reading
* max 4 blocks in one command when using PIO mode.