]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
xilinx: versal: Do not prioritize boot device if driver is not enabled
authorVenkatesh Yadav Abbarapu <venkatesh.abbarapu@amd.com>
Fri, 10 May 2024 06:22:38 +0000 (08:22 +0200)
committerMichal Simek <michal.simek@amd.com>
Mon, 17 Jun 2024 14:02:29 +0000 (16:02 +0200)
SOC can boot out of the device which is not accessible from APU and running
this is detected as a warning, as the device is not accessible.For example
getting below warning when the boot mode is OSPI and OSPI is not enabled in
device tree.
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)

Ignoring the prioritization of the boot device which driver is not enabled
and continue with the default boot_targets. Recommendation is to use custom
boot_targets via environment file as is done for example for Kria via
zynqmp_kria.env file.

Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu@amd.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/8b7cca5c7b84cb4854104e0c48f8aa63c4ec5ace.1715322156.git.michal.simek@amd.com
board/xilinx/versal/board.c

index 77ba783501ebb77cc2443131ba3e00ab65bc0319..39474674cca2b82d6aa6b98b2d439fc8536c38fe 100644 (file)
@@ -150,14 +150,29 @@ static int boot_targets_setup(void)
                break;
        case QSPI_MODE_24BIT:
                puts("QSPI_MODE_24\n");
+               if (uclass_get_device_by_name(UCLASS_SPI,
+                                             "spi@f1030000", &dev)) {
+                       debug("QSPI driver for QSPI device is not present\n");
+                       break;
+               }
                mode = "xspi0";
                break;
        case QSPI_MODE_32BIT:
                puts("QSPI_MODE_32\n");
+               if (uclass_get_device_by_name(UCLASS_SPI,
+                                             "spi@f1030000", &dev)) {
+                       debug("QSPI driver for QSPI device is not present\n");
+                       break;
+               }
                mode = "xspi0";
                break;
        case OSPI_MODE:
                puts("OSPI_MODE\n");
+               if (uclass_get_device_by_name(UCLASS_SPI,
+                                             "spi@f1010000", &dev)) {
+                       debug("OSPI driver for OSPI device is not present\n");
+                       break;
+               }
                mode = "xspi0";
                break;
        case EMMC_MODE: