fdt: Swap the signature for board_fdt_blob_setup()
This returns a devicetree and updates a parameter with an error code.
Swap it, since this fits better with the way U-Boot normally works. It
also (more easily) allows leaving the existing pointer unchanged.
No yaks were harmed in this change, but there is a very small code-size
reduction.
For sifive, the OF_BOARD option must be set for the function to be
called, so there is no point in checking it again. Also OF_SEPARATE is
defined always.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Matthias Brugger <mbrugger@suse.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
[trini: Update total_compute]
Signed-off-by: Tom Rini <trini@konsulko.com>
diff --git a/board/armltd/total_compute/total_compute.c b/board/armltd/total_compute/total_compute.c
index 1336d2e..75ba3c3 100644
--- a/board/armltd/total_compute/total_compute.c
+++ b/board/armltd/total_compute/total_compute.c
@@ -37,15 +37,13 @@
*/
unsigned long __section(".data") fw_dtb_pointer;
-void *board_fdt_blob_setup(int *err)
+int board_fdt_blob_setup(void **fdtp)
{
- *err = 0;
- if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC) {
- *err = -ENXIO;
- return NULL;
- }
+ if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC)
+ return -ENXIO;
- return (void *)fw_dtb_pointer;
+ *fdtp = (void *)fw_dtb_pointer;
+ return 0;
}
int misc_init_r(void)
diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
index 0119f54..b5ede58 100644
--- a/board/armltd/vexpress64/vexpress64.c
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -168,42 +168,37 @@
return fdt_subnode_offset((void *)dtb_ptr, 0, "memory") >= 0;
}
-void *board_fdt_blob_setup(int *err)
+int board_fdt_blob_setup(void **fdtp)
{
#ifdef CONFIG_TARGET_VEXPRESS64_JUNO
phys_addr_t fdt_rom_addr = find_dtb_in_nor_flash(CONFIG_JUNO_DTB_PART);
- *err = 0;
- if (fdt_rom_addr == ~0UL) {
- *err = -ENXIO;
- return NULL;
- }
+ if (fdt_rom_addr == ~0UL)
+ return -ENXIO;
- return (void *)fdt_rom_addr;
+ *fdtp = (void *)fdt_rom_addr;
+ return 0;
#endif
#ifdef VEXPRESS_FDT_ADDR
if (fdt_magic(VEXPRESS_FDT_ADDR) == FDT_MAGIC) {
- *err = 0;
- return (void *)VEXPRESS_FDT_ADDR;
+ *fdtp = (void *)VEXPRESS_FDT_ADDR;
+ return 0;
}
#endif
if (is_valid_dtb(prior_stage_fdt_address[1])) {
- *err = 0;
- return (void *)prior_stage_fdt_address[1];
+ *fdtp = (void *)prior_stage_fdt_address[1];
+ return 0;
} else if (is_valid_dtb(prior_stage_fdt_address[0])) {
- *err = 0;
- return (void *)prior_stage_fdt_address[0];
+ *fdtp = (void *)prior_stage_fdt_address[0];
+ return 0;
}
- if (fdt_magic(gd->fdt_blob) == FDT_MAGIC) {
- *err = 0;
- return (void *)gd->fdt_blob;
- }
+ if (fdt_magic(*fdtp) == FDT_MAGIC)
+ return 0;
- *err = -ENXIO;
- return NULL;
+ return -ENXIO;
}
#endif