[PATCH v2 1/1] spl: initialize PCI before booting

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Mon Jul 24 22:18:41 CEST 2023


MMC, SATA, and USB may be using PCI based controllers.
Initialize the PCI sub-system before trying to boot.

Remove the initialization for NVMe that is now redundant.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
v2:
	Centralize the PCI initialization
---
 common/spl/spl.c      | 7 +++++++
 common/spl/spl_nvme.c | 5 -----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/common/spl/spl.c b/common/spl/spl.c
index f09bb97781..0062f3f45d 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -800,6 +800,13 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 	    IS_ENABLED(CONFIG_SPL_ATF))
 		dram_init_banksize();
 
+	if (CONFIG_IS_ENABLED(PCI)) {
+		ret = pci_init();
+		if (ret)
+			puts(SPL_TPL_PROMPT "Cannot initialize PCI\n");
+		/* Don't fail. We still can try other boot methods. */
+	}
+
 	bootcount_inc();
 
 	/* Dump driver model states to aid analysis */
diff --git a/common/spl/spl_nvme.c b/common/spl/spl_nvme.c
index 2af63f1dc8..c8774d67ec 100644
--- a/common/spl/spl_nvme.c
+++ b/common/spl/spl_nvme.c
@@ -7,7 +7,6 @@
 
 #include <common.h>
 #include <spl.h>
-#include <init.h>
 #include <nvme.h>
 
 static int spl_nvme_load_image(struct spl_image_info *spl_image,
@@ -15,10 +14,6 @@ static int spl_nvme_load_image(struct spl_image_info *spl_image,
 {
 	int ret;
 
-	ret = pci_init();
-	if (ret < 0)
-		return ret;
-
 	ret = nvme_scan_namespace();
 	if (ret < 0)
 		return ret;
-- 
2.40.1



More information about the U-Boot mailing list