This sets the overlay search path to $BOOT/overlays during starting
an bootloader spec entry with the effect that overlays from there
can be applied.

Signed-off-by: Sascha Hauer <[email protected]>
---
 common/blspec.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/common/blspec.c b/common/blspec.c
index fd3e088920..ded149d715 100644
--- a/common/blspec.c
+++ b/common/blspec.c
@@ -75,8 +75,8 @@ static int blspec_boot(struct bootentry *be, int verbose, int 
dryrun)
        const char *abspath, *devicetree, *options, *initrd, *linuximage;
        const char *overlays;
        const char *appendroot;
-       const char *old_fws;
-       char *fws;
+       const char *old_fws, *old_ovld;
+       char *fws, *ovld;
        struct bootm_data data = {
                .dryrun = dryrun,
        };
@@ -139,6 +139,11 @@ static int blspec_boot(struct bootentry *be, int verbose, 
int dryrun)
                        (entry->cdev && entry->cdev->dev) ?
                        dev_name(entry->cdev->dev) : "none");
 
+       old_ovld = of_overlay_get_dir();
+       ovld = basprintf("%s/overlays", abspath);
+       of_overlay_set_dir(ovld);
+       free(ovld);
+
        old_fws = firmware_get_searchpath();
        fws = basprintf("%s/lib/firmware:%s", abspath, old_fws);
        firmware_set_searchpath(fws);
@@ -151,6 +156,7 @@ static int blspec_boot(struct bootentry *be, int verbose, 
int dryrun)
        if (overlays)
                of_unregister_fixup(blspec_overlay_fixup, entry);
 
+       of_overlay_set_dir(old_ovld);
        firmware_set_searchpath(old_fws);
 
 err_out:
-- 
2.29.2


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to