]> git.baikalelectronics.ru Git - uboot.git/commitdiff
sandbox: Remove OF_HOSTFILE
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Tue, 26 Oct 2021 06:12:33 +0000 (09:12 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 27 Oct 2021 20:38:26 +0000 (16:38 -0400)
OF_HOSTFILE is used on sandbox configs only.  Although it's pretty
unique and not causing any confusions,  we are better of having simpler
config options for the DTB.

So let's replace that with the existing OF_BOARD.  U-Boot would then
have only three config options for the DTB origin.
- OF_SEPARATE, build separately from U-Boot
- OF_BOARD, board specific way of providing the DTB
- OF_EMBED embedded in the u-boot binary(should not be used in production

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
31 files changed:
Makefile
arch/arm/mach-stm32mp/boot_params.c
arch/sandbox/cpu/cpu.c
arch/sandbox/include/asm/u-boot-sandbox.h
board/AndesTech/ax25-ae350/ax25-ae350.c
board/Marvell/octeontx/board-fdt.c
board/Marvell/octeontx2/board-fdt.c
board/Marvell/octeontx2/board.c
board/armltd/vexpress64/vexpress64.c
board/broadcom/bcmstb/bcmstb.c
board/emulation/qemu-arm/qemu-arm.c
board/emulation/qemu-ppce500/qemu-ppce500.c
board/emulation/qemu-riscv/qemu-riscv.c
board/highbank/highbank.c
board/raspberrypi/rpi/rpi.c
board/sifive/unleashed/unleashed.c
board/sifive/unmatched/unmatched.c
board/socrates/socrates.c
board/xen/xenguest_arm64/xenguest_arm64.c
board/xilinx/common/board.c
configs/sandbox64_defconfig
configs/sandbox_defconfig
configs/sandbox_flattree_defconfig
configs/sandbox_noinst_defconfig
configs/sandbox_spl_defconfig
configs/tools-only_defconfig
doc/develop/devicetree/control.rst
dts/Kconfig
include/fdtdec.h
lib/fdtdec.c
scripts/Makefile.spl

index 5194e4dc782991a5e7a52110622b3a0d4db3957d..c0ea933cb6367387fc8974ebe879dfcf689dd4d7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -947,7 +947,7 @@ INPUTS-$(CONFIG_BINMAN_STANDALONE_FDT) += u-boot.dtb
 ifeq ($(CONFIG_SPL_FRAMEWORK),y)
 INPUTS-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
 endif
-INPUTS-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
+INPUTS-$(CONFIG_SANDBOX) += u-boot.dtb
 ifneq ($(CONFIG_SPL_TARGET),)
 INPUTS-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
 endif
@@ -1407,7 +1407,7 @@ u-boot-lzma.img: u-boot.bin.lzma FORCE
 
 u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
                $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin \
-                       $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_OF_HOSTFILE)$(CONFIG_BINMAN_STANDALONE_FDT),dts/dt.dtb) \
+                       $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SANDBOX)$(CONFIG_BINMAN_STANDALONE_FDT),dts/dt.dtb) \
                ,$(UBOOT_BIN)) FORCE
        $(call if_changed,mkimage)
        $(BOARD_SIZE_CHECK)
@@ -1421,7 +1421,7 @@ MKIMAGEFLAGS_u-boot.itb += -B 0x8
 
 ifdef U_BOOT_ITS
 u-boot.itb: u-boot-nodtb.bin \
-               $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_OF_HOSTFILE),dts/dt.dtb) \
+               $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SANDBOX),dts/dt.dtb) \
                $(U_BOOT_ITS) FORCE
        $(call if_changed,mkfitimage)
        $(BOARD_SIZE_CHECK)
index 84647e70398b4ef4d2fff310dc3d8b67ef19993f..e91ef1b2fc7075b549d2164f13224a24cbedc727 100644 (file)
@@ -33,10 +33,11 @@ void save_boot_params(unsigned long r0, unsigned long r1, unsigned long r2,
  * Use the saved FDT address provided by TF-A at boot time (NT_FW_CONFIG =
  * Non Trusted Firmware configuration file) when the pointer is valid
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
        log_debug("%s: nt_fw_dtb=%lx\n", __func__, nt_fw_dtb);
 
+       *err = 0;
        /* use external device tree only if address is valid */
        if (nt_fw_dtb >= STM32_DDR_BASE) {
                if (fdt_magic(nt_fw_dtb) == FDT_MAGIC)
index 48636ab63919b1143f848c66826e035c455807d8..9887d09272a37da8b89a93cfc831bfd7914bec4b 100644 (file)
@@ -291,44 +291,51 @@ void invalidate_dcache_range(unsigned long start, unsigned long stop)
 {
 }
 
-int sandbox_read_fdt_from_file(void)
+void *board_fdt_blob_setup(int *ret)
 {
        struct sandbox_state *state = state_get_current();
        const char *fname = state->fdt_fname;
-       void *blob;
+       void *blob = NULL;
        loff_t size;
        int err;
        int fd;
 
        blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0);
+       *ret = 0;
        if (!state->fdt_fname) {
                err = fdt_create_empty_tree(blob, 256);
                if (!err)
                        goto done;
                printf("Unable to create empty FDT: %s\n", fdt_strerror(err));
-               return -EINVAL;
+               *ret = -EINVAL;
+               goto fail;
        }
 
        err = os_get_filesize(fname, &size);
        if (err < 0) {
-               printf("Failed to file FDT file '%s'\n", fname);
-               return err;
+               printf("Failed to find FDT file '%s'\n", fname);
+               *ret = err;
+               goto fail;
        }
        fd = os_open(fname, OS_O_RDONLY);
        if (fd < 0) {
                printf("Failed to open FDT file '%s'\n", fname);
-               return -EACCES;
+               *ret = -EACCES;
+               goto fail;
        }
+
        if (os_read(fd, blob, size) != size) {
                os_close(fd);
-               return -EIO;
+               printf("Failed to read FDT file '%s'\n", fname);
+               *ret =  -EIO;
+               goto fail;
        }
        os_close(fd);
 
 done:
-       gd->fdt_blob = blob;
-
-       return 0;
+       return blob;
+fail:
+       return NULL;
 }
 
 ulong timer_get_boot_us(void)
index 73b1897191d5a8e33e72645842c8f6c60850a283..56dc13c3eb11e6ca79adc6391f8e1d74f709f28c 100644 (file)
@@ -76,14 +76,6 @@ int pci_unmap_physmem(const void *addr, unsigned long len,
  */
 void sandbox_set_enable_pci_map(int enable);
 
-/**
- * sandbox_read_fdt_from_file() - Read a device tree from a file
- *
- * Read a device tree file from a host file and set it up for use as the
- * control FDT.
- */
-int sandbox_read_fdt_from_file(void);
-
 /**
  * sandbox_reset() - reset sandbox
  *
index b28894ed46559648f5269b4d20e3ad2b733e7e11..5fb32fd0fdbb3da5c371f93164b7ca2aaff32822 100644 (file)
@@ -54,13 +54,15 @@ ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
        return 0;
 }
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
 #if CONFIG_IS_ENABLED(OF_BOARD)
        return (void *)(ulong)gd->arch.firmware_fdt_addr;
 #elif CONFIG_IS_ENABLED(OF_SEPARATE)
        return (void *)CONFIG_SYS_FDT_BASE;
 #else
+       *err = -EINVAL;
        return NULL;
 #endif
 }
index 1db2a4a26750f641721a9d614552cffa2d15df5b..e989c374f2b274ea813a35e06c48d3d0a294544c 100644 (file)
@@ -301,7 +301,8 @@ int ft_board_setup(void *blob, struct bd_info *bd)
  *
  * @return     FDT base address received from ATF in x1 register
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        return (void *)fdt_base_addr;
 }
index a4771af4c1d87c7076ea2567b2b4c4c00281a190..e2cfe017e83ca107d366529b6c4e2ad423028993 100644 (file)
@@ -215,7 +215,8 @@ int ft_board_setup(void *blob, struct bd_info *bd)
  *
  * @return     FDT base address received from ATF in x1 register
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        return (void *)fdt_base_addr;
 }
index 4e8cb839f5ee521a04ec60f0bab04df65f75714e..63aa2d6134969fd970ecbb981e911390c7391f19 100644 (file)
@@ -226,12 +226,13 @@ static int do_go_uboot(struct cmd_tbl *cmdtp, int flag, int argc,
        uboot_entry_t entry;
        ulong addr;
        void *fdt;
+       int err;
 
        if (argc < 2)
                return CMD_RET_USAGE;
 
        addr = hextoul(argv[1], NULL);
-       fdt = board_fdt_blob_setup();
+       fdt = board_fdt_blob_setup(&err);
        entry = (uboot_entry_t)addr;
        flush_cache((ulong)addr, 1 << 20);      /* 1MiB should be enough */
        dcache_disable();
index 2e4260286b5a89bf0024e886da3901ba5cb77259..d2f307cca5d21b8eeb93e18721093c3b407f0238 100644 (file)
@@ -131,12 +131,15 @@ static phys_addr_t find_dtb_in_nor_flash(const char *partname)
        return ~0;
 }
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
        phys_addr_t fdt_rom_addr = find_dtb_in_nor_flash(CONFIG_JUNO_DTB_PART);
 
-       if (fdt_rom_addr == ~0UL)
+       *err = 0;
+       if (fdt_rom_addr == ~0UL) {
+               *err = -ENXIO;
                return NULL;
+       }
 
        return (void *)fdt_rom_addr;
 }
index 723ebda3bd2105c8aa213d88c69ff3fca415e9c6..07aeb0981c00956e453c786503fba0ebe033dc5b 100644 (file)
@@ -131,8 +131,9 @@ int board_late_init(void)
        return 0;
 }
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        /* Stored the DTB address there during our init */
        return (void *)prior_stage_fdt_address;
 }
index aa68bef469a66ac1e738c1ce0145287ae1681a3b..16d5a97167a6a8e5f26f6d6cda30ffe76a5ff2f3 100644 (file)
@@ -94,8 +94,9 @@ int dram_init_banksize(void)
        return 0;
 }
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        /* QEMU loads a generated DTB for us at the start of RAM. */
        return (void *)CONFIG_SYS_SDRAM_BASE;
 }
index 924cc02c4be87327461428c97e3121bd22d89a1c..7d8ba34b2588f11e313ac80b4db0ee81da22c700 100644 (file)
@@ -333,8 +333,9 @@ u32 cpu_mask(void)
  *
  * @return virtual address of FDT received from QEMU in r3 register
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        return get_fdt_virt();
 }
 
index 2a26e265ffb9b982e402f21d371f198c83f5f1f3..b0d9dd59b12f719267c167b246c2cfac086c5754 100644 (file)
@@ -72,8 +72,9 @@ int board_fit_config_name_match(const char *name)
 }
 #endif
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        /* Stored the DTB address there during our init */
        return (void *)(ulong)gd->arch.firmware_fdt_addr;
 }
index ffb6fd922dafd39c10bddc6c3edf4ebc356f9183..b5fa5101e881aa7a885d47ced1871f989c67bb32 100644 (file)
@@ -111,8 +111,9 @@ int ft_board_setup(void *fdt, struct bd_info *bd)
 }
 #endif
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        /*
         * The ECME management processor loads the DTB from NOR flash
         * into DRAM (at 4KB), where it gets patched to contain the
index 0c7d58d18db2d21a628d16f8b07e6320da94b4b2..55afaa54d9f31bfe996c78570fe79baf6c04a4bd 100644 (file)
@@ -488,10 +488,14 @@ int board_init(void)
 /*
  * If the firmware passed a device tree use it for U-Boot.
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
-       if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC)
+       *err = 0;
+       if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC) {
+               *err = -ENXIO;
                return NULL;
+       }
+
        return (void *)fw_dtb_pointer;
 }
 
index e7d2332d8c957a4abbcfd0a26bb620a452444d92..3c3e0e1d0d116bd35fd5e0c3a7089616150c5e6d 100644 (file)
@@ -114,8 +114,9 @@ int misc_init_r(void)
 
 #endif
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        if (IS_ENABLED(CONFIG_OF_SEPARATE)) {
                if (gd->arch.firmware_fdt_addr)
                        return (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr;
index 93c452c57fca35258b5c6700df7865ed8cac0ab1..4895909f8d6af6a78a5caa4df9546c247d142bb3 100644 (file)
@@ -11,8 +11,9 @@
 #include <dm.h>
 #include <asm/sections.h>
 
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
+       *err = 0;
        if (IS_ENABLED(CONFIG_OF_SEPARATE)) {
                if (gd->arch.firmware_fdt_addr)
                        return (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr;
index 3ba2fbbd56040f341c6cc6599917036fe6fe8ac7..a81cb7b2ba661a610e540d76511ce3c8ebfc3fa7 100644 (file)
@@ -220,13 +220,15 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 #endif /* CONFIG_OF_BOARD_SETUP */
 
 #if defined(CONFIG_OF_SEPARATE)
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
        void *fw_dtb;
 
+       *err = 0;
        fw_dtb = (void *)(CONFIG_SYS_TEXT_BASE - CONFIG_ENV_SECT_SIZE);
        if (fdt_magic(fw_dtb) != FDT_MAGIC) {
                printf("DTB is not passed via %x\n", (u32)fw_dtb);
+               *err = -ENXIO;
                return NULL;
        }
 
index da0ddeefff3dab6c1dca607abe4c3097c3f1fd26..6e10bba76b71c83b86d15b1493ac7165e0c27dfe 100644 (file)
@@ -39,10 +39,13 @@ int board_init(void)
  * x0 is the physical address of the device tree blob (dtb) in system RAM.
  * This is stored in rom_pointer during low level init.
  */
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
-       if (fdt_magic(rom_pointer[0]) != FDT_MAGIC)
+       *err = 0;
+       if (fdt_magic(rom_pointer[0]) != FDT_MAGIC) {
+               *err = -ENXIO;
                return NULL;
+       }
        return (void *)rom_pointer[0];
 }
 
index 9006bd3b4d2e51e2e086142b0499be3095103f9e..78a5d0efa862b105eb34af5d7a40dafbfaa9176d 100644 (file)
@@ -320,10 +320,11 @@ __maybe_unused int xilinx_read_eeprom(void)
 }
 
 #if defined(CONFIG_OF_BOARD) || defined(CONFIG_OF_SEPARATE)
-void *board_fdt_blob_setup(void)
+void *board_fdt_blob_setup(int *err)
 {
        void *fdt_blob;
 
+       *err = 0;
        if (!IS_ENABLED(CONFIG_SPL_BUILD) &&
            !IS_ENABLED(CONFIG_VERSAL_NO_DDR) &&
            !IS_ENABLED(CONFIG_ZYNQMP_NO_DDR)) {
index df9633d762a2d908dee590eca5376cbeb967f7b1..838280e14726700e03a1b53172d8ade7584377ab 100644 (file)
@@ -88,7 +88,6 @@ CONFIG_MAC_PARTITION=y
 CONFIG_AMIGA_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIVE=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_ENV_IS_NOWHERE=y
 CONFIG_ENV_IS_IN_EXT4=y
 CONFIG_ENV_EXT4_INTERFACE="host"
index 9a462cb57c4a5e7b1a056169cdd0e3584307f15d..d07a7f302e6e5b70ec68801ccda2ee57038044ba 100644 (file)
@@ -113,7 +113,6 @@ CONFIG_MAC_PARTITION=y
 CONFIG_AMIGA_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIVE=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_ENV_IS_NOWHERE=y
 CONFIG_ENV_IS_IN_EXT4=y
 CONFIG_ENV_EXT4_INTERFACE="host"
index 11015744e7a4d3ce0603d866f006781df124f145..5980c8610ea8ccfdfc6a8781b281b3d529336d23 100644 (file)
@@ -69,7 +69,6 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_MAC_PARTITION=y
 CONFIG_AMIGA_PARTITION=y
 CONFIG_OF_CONTROL=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_ENV_IS_NOWHERE=y
 CONFIG_ENV_IS_IN_EXT4=y
 CONFIG_ENV_EXT4_INTERFACE="host"
index b3584563d245deabf51b4f54c7c2e24f4f5552a7..238604f5cde15db59e58121f251edccb5d7b44c7 100644 (file)
@@ -88,7 +88,6 @@ CONFIG_MAC_PARTITION=y
 CONFIG_AMIGA_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_NOWHERE=y
 CONFIG_ENV_IS_IN_EXT4=y
index 73cf5dd2b0457e43a492a7d4230a7d3aa579a226..b9da8dc8e97dcc7bef1d3d92bc0da2ce0a844caa 100644 (file)
@@ -89,7 +89,6 @@ CONFIG_MAC_PARTITION=y
 CONFIG_AMIGA_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_SPL_OF_PLATDATA=y
 CONFIG_SPL_OF_PLATDATA_INST=y
 CONFIG_ENV_IS_NOWHERE=y
index d0e34cb7fa877e6eac5fa37327290168107af9cf..8f5d5c6df591d52772745ed7faac1bf2d26cd566 100644 (file)
@@ -16,7 +16,6 @@ CONFIG_AVB_BUF_SIZE=0x8192
 CONFIG_BOOTP_DNS2=y
 # CONFIG_CMD_DATE is not set
 CONFIG_OF_CONTROL=y
-CONFIG_OF_HOSTFILE=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_BOOTP_SEND_HOSTNAME=y
 CONFIG_IP_DEFRAG=y
index e84dfb6677a62a4975b1ca69a9155fa6e1d55714..0e6f85d5af11af0d39435f17735cd62c8d9da2ab 100644 (file)
@@ -108,10 +108,9 @@ If CONFIG_OF_BOARD is defined, a board-specific routine will provide the
 devicetree at runtime, for example if an earlier bootloader stage creates
 it and passes it to U-Boot.
 
-If CONFIG_OF_HOSTFILE is defined, then it will be read from a file on
-startup. This is only useful for sandbox. Use the -d flag to U-Boot to
-specify the file to read, -D for the default and -T for the test devicetree,
-used to run sandbox unit tests.
+If CONFIG_SANDBOX is defined, then it will be read from a file on
+startup. Use the -d flag to U-Boot to specify the file to read, -D for the
+default and -T for the test devicetree, used to run sandbox unit tests.
 
 You cannot use more than one of these options at the same time.
 
index 90c7a1c5f49edc26da1f325dca42eb39a5ad1b37..b7c4a2fec0316ea3d5a8e0a53a0bb557e22db8fd 100644 (file)
@@ -97,6 +97,7 @@ config OF_LIVE
 choice
        prompt "Provider of DTB for DT control"
        depends on OF_CONTROL
+       default OF_BOARD if SANDBOX
 
 config OF_SEPARATE
        bool "Separate DTB for DT control"
@@ -115,20 +116,11 @@ config OF_EMBED
 
 config OF_BOARD
        bool "Provided by the board (e.g a previous loader) at runtime"
-       depends on !SANDBOX
        help
          If this option is enabled, the device tree will be provided by
          the board at runtime if the board supports it, instead of being
          bundled with the image.
 
-config OF_HOSTFILE
-       bool "Host filed DTB for DT control"
-       depends on SANDBOX
-       help
-         If this option is enabled, DTB will be read from a file on startup.
-         This is only useful for Sandbox.  Use the -d flag to U-Boot to
-         specify the file to read.
-
 endchoice
 
 config DEFAULT_DEVICE_TREE
index 239814228d73a0700019b578e252f0e6aa34c52d..6c7ab887b207b84925f6052f16798d1429eda87e 100644 (file)
@@ -1158,8 +1158,10 @@ int fdtdec_resetup(int *rescan);
  * Board-specific FDT initialization. Returns the address to a device tree blob.
  * Called when CONFIG_OF_BOARD is defined, or if CONFIG_OF_SEPARATE is defined
  * and the board implements it.
+ *
+ * @err internal error code if we fail to setup a DTB
  */
-void *board_fdt_blob_setup(void);
+void *board_fdt_blob_setup(int *err);
 
 /*
  * Decode the size of memory
index 959b337cdc82ad2fe77baafead6b7c4752c4e2cd..7681f272d2795b9a5aeed730170a71115f08427c 100644 (file)
@@ -1213,9 +1213,11 @@ static int uncompress_blob(const void *src, ulong sz_src, void **dstp)
  * For CONFIG_OF_SEPARATE, the board may optionally implement this to
  * provide and/or fixup the fdt.
  */
-__weak void *board_fdt_blob_setup(void)
+__weak void *board_fdt_blob_setup(int *err)
 {
        void *fdt_blob = NULL;
+
+       *err = 0;
 #ifdef CONFIG_SPL_BUILD
        /* FDT is at end of BSS unless it is in a different memory region */
        if (IS_ENABLED(CONFIG_SPL_SEPARATE_BSS))
@@ -1226,6 +1228,7 @@ __weak void *board_fdt_blob_setup(void)
        /* FDT is at end of image */
        fdt_blob = (ulong *)&_end;
 #endif
+
        return fdt_blob;
 }
 #endif
@@ -1607,12 +1610,9 @@ int fdtdec_setup(void)
 #  endif
 # elif defined(CONFIG_OF_BOARD) || defined(CONFIG_OF_SEPARATE)
        /* Allow the board to override the fdt address. */
-       gd->fdt_blob = board_fdt_blob_setup();
-# elif defined(CONFIG_OF_HOSTFILE)
-       if (sandbox_read_fdt_from_file()) {
-               puts("Failed to read control FDT\n");
-               return -1;
-       }
+       gd->fdt_blob = board_fdt_blob_setup(&ret);
+       if (ret)
+               return ret;
 # endif
 # ifndef CONFIG_SPL_BUILD
        /* Allow the early environment to override the fdt address */
index 6f26eb1fa1f45c14feff9a2bba2cbbb535e597bb..1bb2844913f4c0cac6f85378f75207f04e05cfd6 100644 (file)
@@ -300,7 +300,7 @@ endif
 #   - we have either OF_SEPARATE or OF_HOSTFILE
 build_dtb :=
 ifneq ($(CONFIG_$(SPL_TPL_)OF_REAL),)
-ifeq ($(CONFIG_OF_SEPARATE)$(CONFIG_OF_HOSTFILE),y)
+ifeq ($(CONFIG_OF_SEPARATE)$(CONFIG_SANDBOX),y)
 build_dtb := y
 endif
 endif