bootstd: Avoid sprintf() in SPL when creating bootdevs
authorSimon Glass <sjg@chromium.org>
Thu, 19 Dec 2024 18:28:52 +0000 (11:28 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 27 Dec 2024 21:16:10 +0000 (15:16 -0600)
The name of the bootdev device is not that important, particular in SPL.
Save a little code space by using a simpler name.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/bootdev-uclass.c

index 64ec4fd..2e61c85 100644 (file)
@@ -16,6 +16,7 @@
 #include <malloc.h>
 #include <part.h>
 #include <sort.h>
+#include <spl.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
 #include <dm/uclass-internal.h>
@@ -278,8 +279,13 @@ int bootdev_setup_for_sibling_blk(struct udevice *blk, const char *drv_name)
        int ret, len;
 
        len = bootdev_get_suffix_start(blk, ".blk");
-       snprintf(dev_name, sizeof(dev_name), "%.*s.%s", len, blk->name,
-                "bootdev");
+       if (xpl_phase() < PHASE_BOARD_R) {
+               strlcpy(dev_name, blk->name, sizeof(dev_name) - 5);
+               strcat(dev_name, ".sib");
+       } else {
+               snprintf(dev_name, sizeof(dev_name), "%.*s.%s", len, blk->name,
+                        "bootdev");
+       }
 
        parent = dev_get_parent(blk);
        ret = device_find_child_by_name(parent, dev_name, &dev);