/*
* For CONFIG_OF_EMBED case the FDT is embedded into ELF, available by
- * __dtb_dt_begin. After U-boot ELF self-relocation to RAM top address
+ * __dtb_dt_begin. After U-Boot ELF self-relocation to RAM top address
* it is worth to update fdt_blob in global_data
*/
if (IS_ENABLED(CONFIG_OF_EMBED))
- gd->fdt_blob = dtb_dt_embedded();
+ fdtdec_setup_embed();
#ifdef CONFIG_EFI_LOADER
/*
u32 phys_lo;
};
-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 inline 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
-}
-
/**
* Compute the size of a resource.
*
const char *name, const char **compatibles,
unsigned int count, unsigned long flags);
+/**
+ * fdtdec_setup_embed - pick up embedded DTS
+ *
+ * Should be invoked under CONFIG_OF_EMBED guard.
+ */
+void fdtdec_setup_embed(void);
+
/**
* Set up the device tree ready for use
*/
[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)
+{
+ u8 *addr = NULL;
+
+ if (IS_ENABLED(CONFIG_OF_EMBED)) {
+ addr = __dtb_dt_begin;
+
+ if (IS_ENABLED(CONFIG_XPL_BUILD))
+ addr = __dtb_dt_spl_begin;
+ }
+ return addr;
+}
+
const char *fdtdec_get_srcname(void)
{
return fdt_src_name[gd->fdt_src];
}
}
+void fdtdec_setup_embed(void)
+{
+ gd->fdt_blob = dtb_dt_embedded();
+ gd->fdt_src = FDTSRC_EMBED;
+}
+
int fdtdec_setup(void)
{
int ret = -ENOENT;
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();
}
}