summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEvgeny Bachinin <[email protected]>2024-12-11 01:39:57 +0300
committerTom Rini <[email protected]>2024-12-31 10:57:50 -0600
commit623f5cf517ae0e0f6f7132ac6411ea0a8dd9b3f7 (patch)
treed1cb9297235095524001153a9cb2b69ba43b401f /lib
parentb841e559cd26ffcb20f22e8ee75debed9616c002 (diff)
fdtdec: encapsulate dtb_dt_embedded() within
Patch keeps the access to dtb_dt_embedded() within fdtdec API, by means of new API function introduction. This new function is a common place for updating appropriate global_data fields for OF_EMBED case. Also, the consequence of the patch is movement of '___dtb_dt_*begin' symbols' declaration from header file, because nobody used symbols outside the lib/fdtdec.c. Signed-off-by: Evgeny Bachinin <[email protected]> Suggested-by: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
Diffstat (limited to 'lib')
-rw-r--r--lib/fdtdec.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index b0655988029..9cb94a15844 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -93,6 +93,23 @@ static const char *const fdt_src_name[] = {
[FDTSRC_BLOBLIST] = "bloblist",
};
+extern u8 __dtb_dt_begin[]; /* embedded device tree blob */
+extern u8 __dtb_dt_spl_begin[]; /* embedded device tree blob for SPL/TPL */
+
+/* Get a pointer to the embedded devicetree, if there is one, else NULL */
+static u8 *dtb_dt_embedded(void)
+{
+#ifdef CONFIG_OF_EMBED
+# ifdef CONFIG_XPL_BUILD
+ return __dtb_dt_spl_begin;
+# else
+ return __dtb_dt_begin;
+# endif
+#else
+ return NULL;
+#endif
+}
+
const char *fdtdec_get_srcname(void)
{
return fdt_src_name[gd->fdt_src];
@@ -1664,6 +1681,12 @@ static void setup_multi_dtb_fit(void)
}
}
+void fdtdec_setup_embed(void)
+{
+ gd->fdt_blob = dtb_dt_embedded();
+ gd->fdt_src = FDTSRC_EMBED;
+}
+
int fdtdec_setup(void)
{
int ret = -ENOENT;
@@ -1699,8 +1722,7 @@ int fdtdec_setup(void)
gd->fdt_blob = fdt_find_separate();
gd->fdt_src = FDTSRC_SEPARATE;
} else { /* embed dtb in ELF file for testing / development */
- gd->fdt_blob = dtb_dt_embedded();
- gd->fdt_src = FDTSRC_EMBED;
+ fdtdec_setup_embed();
}
}