xilinx: zynqmp: Fix SPL_FS_LOAD_PAYLOAD_NAME usage
authorMichal Simek <michal.simek@amd.com>
Fri, 2 Dec 2022 13:06:15 +0000 (14:06 +0100)
committerMichal Simek <michal.simek@amd.com>
Mon, 5 Dec 2022 07:55:55 +0000 (08:55 +0100)
SPL_FS_LOAD_PAYLOAD_NAME depends on SPL to be enabled.
If SPL is not enabled code still expects SPL_FS_LOAD_PAYLOAD_NAME to be
present. That's why setup proper dependency in the code.
And by doing so also change the logic around dfu_alt_info string
composition to be simpler.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/3989c390a4acae13a1b05c040e14fb3d68bced02.1669986373.git.michal.simek@amd.com
board/xilinx/zynqmp/zynqmp.c

index 5fe0873..579708d 100644 (file)
@@ -611,8 +611,7 @@ enum env_location env_get_location(enum env_operation op, int prio)
 
 void set_dfu_alt_info(char *interface, char *devstr)
 {
-       int multiboot;
-       int bootseq = 0;
+       int multiboot, bootseq = 0, len = 0;
 
        ALLOC_CACHE_ALIGN_BUFFER(char, buf, DFU_ALT_BUF_LEN);
 
@@ -634,29 +633,33 @@ void set_dfu_alt_info(char *interface, char *devstr)
        case SD1_LSHFT_MODE:
        case SD_MODE1:
                bootseq = mmc_get_env_dev();
-               if (!multiboot)
-                       snprintf(buf, DFU_ALT_BUF_LEN,
-                                "mmc %d=boot.bin fat %d 1;"
-                                "%s fat %d 1",
-                                bootseq, bootseq,
-                                CONFIG_SPL_FS_LOAD_PAYLOAD_NAME, bootseq);
-               else
-                       snprintf(buf, DFU_ALT_BUF_LEN,
-                                "mmc %d=boot%04d.bin fat %d 1;"
-                                "%s fat %d 1",
-                                bootseq, multiboot, bootseq,
-                                CONFIG_SPL_FS_LOAD_PAYLOAD_NAME, bootseq);
+
+               len += snprintf(buf + len, DFU_ALT_BUF_LEN, "mmc %d=boot",
+                              bootseq);
+
+               if (multiboot)
+                       len += snprintf(buf + len, DFU_ALT_BUF_LEN,
+                                      "%04d", multiboot);
+
+               len += snprintf(buf + len, DFU_ALT_BUF_LEN, ".bin fat %d 1",
+                              bootseq);
+#if defined(CONFIG_SPL_FS_LOAD_PAYLOAD_NAME)
+               len += snprintf(buf + len, DFU_ALT_BUF_LEN, ";%s fat %d 1",
+                              CONFIG_SPL_FS_LOAD_PAYLOAD_NAME, bootseq);
+#endif
                break;
-#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
        case QSPI_MODE_24BIT:
        case QSPI_MODE_32BIT:
-               snprintf(buf, DFU_ALT_BUF_LEN,
-                        "sf 0:0=boot.bin raw %x 0x1500000;"
-                        "%s raw 0x%x 0x500000",
-                        multiboot * SZ_32K, CONFIG_SPL_FS_LOAD_PAYLOAD_NAME,
-                        CONFIG_SYS_SPI_U_BOOT_OFFS);
-               break;
+               len += snprintf(buf + len, DFU_ALT_BUF_LEN,
+                              "sf 0:0=boot.bin raw %x 0x1500000",
+                              multiboot * SZ_32K);
+#if defined(CONFIG_SPL_FS_LOAD_PAYLOAD_NAME) && defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
+               len += snprintf(buf + len, DFU_ALT_BUF_LEN,
+                              ";%s raw 0x%x 0x500000",
+                              CONFIG_SPL_FS_LOAD_PAYLOAD_NAME,
+                              CONFIG_SYS_SPI_U_BOOT_OFFS);
 #endif
+               break;
        default:
                return;
        }