[PATCH 2/3] store external device tree as file
Sascha Hauer
s.hauer at pengutronix.de
Mon Dec 9 06:28:12 PST 2024
When barebox is chainloaded from another bootloader it usually gets
passed a device tree from the previous bootloader. While this external
device tree is normally not used by barebox, its contents can still be
interesting, so store the device tree at /external-devicetree when
found. This needs board support to pass the external device tree in
handoff data, i.e. a board has to call
handoff_data_add(HANDOFF_DATA_EXTERNAL_DT, dtb, size);
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
common/startup.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/common/startup.c b/common/startup.c
index b311b77418..abdc0c2db0 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -40,6 +40,8 @@
#include <net.h>
#include <efi/efi-mode.h>
#include <bselftest.h>
+#include <pbl/handoff-data.h>
+#include <libfile.h>
extern initcall_t __barebox_initcalls_start[], __barebox_early_initcalls_end[],
__barebox_initcalls_end[];
@@ -246,6 +248,8 @@ static int run_init(void)
struct stat s;
glob_t g;
int i, ret;
+ size_t size;
+ void *ext_dtb;
setenv("PATH", "/env/bin");
export("PATH");
@@ -289,6 +293,10 @@ static int run_init(void)
globfree(&g);
}
+ ext_dtb = handoff_data_get_entry(HANDOFF_DATA_EXTERNAL_DT, &size);
+ if (ext_dtb)
+ write_file("/external-devicetree", ext_dtb, size);
+
/* source matching script in /env/bmode/ */
bmode = reboot_mode_get();
if (bmode) {
--
2.39.5
More information about the barebox
mailing list