Hello Michael, On 9/6/19 3:20 PM, Michael Tretter wrote: > If a device tree overlay referenced by the blspec depends on firmware, > try to load the firmware from the default Linux firmware search path > /lib/firmware in the about to be started rootfs. Linking barebox with CONFIG_BLSPEC, but without CONFIG_OF_OVERLAY now fails: ./common/blspec.c:84: undefined reference to `firmware_load_overlay' Cheers Ahmad > > Signed-off-by: Michael Tretter <m.tretter@xxxxxxxxxxxxxx> > > --- > Changelog: > > v1->v2: none > --- > common/blspec.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/common/blspec.c b/common/blspec.c > index fbba2fc78c..e733bf1188 100644 > --- a/common/blspec.c > +++ b/common/blspec.c > @@ -14,6 +14,7 @@ > > #include <environment.h> > #include <globalvar.h> > +#include <firmware.h> > #include <readkey.h> > #include <common.h> > #include <driver.h> > @@ -49,6 +50,7 @@ static int blspec_apply_oftree_overlay(char *file, const char *abspath, > struct fdt_header *fdt; > struct device_node *overlay; > char *path; > + char *firmware_path; > > path = basprintf("%s/%s", abspath, file); > > @@ -72,6 +74,20 @@ static int blspec_apply_oftree_overlay(char *file, const char *abspath, > goto out; > } > > + /* > + * Unfortunately the device tree overlay contains only the filename of > + * the firmware and relies on the firmware search paths to find the > + * actual file. Use /lib/firmware in the Linux root directory and hope > + * for the best. > + */ > + firmware_path = basprintf("%s/%s", abspath, "/lib/firmware"); > + ret = firmware_load_overlay(overlay, firmware_path); > + free(firmware_path); > + if (ret) { > + of_delete_node(overlay); > + goto out; > + } > + > ret = of_register_overlay(overlay); > if (ret) { > pr_warn("cannot register devicetree overlay \"%s\"\n", path); > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox