diff options
author | Tom Rini <trini@konsulko.com> | 2024-12-31 10:57:54 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-12-31 10:57:54 -0600 |
commit | 6c76f67ac5f0c796610b624fb839e3f9fc19f775 (patch) | |
tree | 6ea22d828039a96400421f486a2c6e68c20cad31 | |
parent | c6fd2a1c29ac3626e14557ac58e15883fbc80ac0 (diff) | |
parent | e2f0e9a320d1efba9ed280e9a4b14df661daef54 (diff) |
Merge patch series "Keep the access to dtb_dt_embedded() within fdtdec"
Evgeny Bachinin <EABachinin@salutedevices.com> says:
The 1st patch addresses comments from the post-review, available by
link [1].
The 2nd patch fixes problems of dtb_dt_embedded() with checkpatch.
Links:
[1] https://lore.kernel.org/u-boot/CAFLszTgEKamsa6FTnjzrEWQBLkqAR7EBbZqffx09AKgQ7ppuVA@mail.gmail.com/#t
Link: https://lore.kernel.org/r/20241211-dtb_dt_embedded_within_fdtdec-v1-0-7840469f0084@salutedevices.com
-rw-r--r-- | common/board_r.c | 4 | ||||
-rw-r--r-- | include/fdtdec.h | 24 | ||||
-rw-r--r-- | lib/fdtdec.c | 26 |
3 files changed, 33 insertions, 21 deletions
diff --git a/common/board_r.c b/common/board_r.c index 23ebc41868c..f63c6aed4d5 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -155,11 +155,11 @@ static int initr_reloc_global_data(void) /* * 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 /* diff --git a/include/fdtdec.h b/include/fdtdec.h index 58bbd8f392e..d9fcd037ed2 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -136,23 +136,6 @@ struct fdt_pci_addr { 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. * @@ -1156,6 +1139,13 @@ int fdtdec_set_carveout(void *blob, const char *node, const char *prop_name, 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 */ int fdtdec_setup(void); diff --git a/lib/fdtdec.c b/lib/fdtdec.c index c5d29d4385a..f09c9926a7a 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) +{ + 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]; @@ -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(); } } |