mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-13 21:36:57 +00:00
board: sifive: overwrite board_fdt_blob_setup in u-boot proper
Add board_fdt_blob_setup to return the device tree location which is passed by prior stage in u-boot proper. The generic board_fdt_blob_setup always returns _end, it mignt be ok because u-boot SPL would currently put the dtb there, but it would be broken if we put the dtb to another place and assigned the location into a1 register for u-boot proper. Use the location passed by prior stage would make more sence, because we actually pass the location to u-boot proper and want to use that one, rather than the dtb which in _end. We can't use CONFIG_OF_PRIOR_STAGE because it doens't distinguish the implementation of u-boot SPL and u-boot proper, so u-boot SPL need to reply on the prior stage to pass device tree location as well, but we don't pass the DT from boot rom now. In addition, when CONFIG_OF_PRIOR_STAGE is enabled, the u-boot-spl.bin and u-boot.itb won't include the device tree. Signed-off-by: Zong Li <zong.li@sifive.com> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
This commit is contained in:
parent
87e8481885
commit
47d73ba4f4
2 changed files with 22 additions and 0 deletions
|
@ -16,6 +16,7 @@
|
|||
#include <misc.h>
|
||||
#include <spl.h>
|
||||
#include <asm/arch/cache.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
/*
|
||||
* This define is a value used for error/unknown serial.
|
||||
|
@ -113,6 +114,16 @@ int misc_init_r(void)
|
|||
|
||||
#endif
|
||||
|
||||
void *board_fdt_blob_setup(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_OF_SEPARATE)) {
|
||||
if (gd->arch.firmware_fdt_addr)
|
||||
return (ulong *)gd->arch.firmware_fdt_addr;
|
||||
else
|
||||
return (ulong *)&_end;
|
||||
}
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -9,6 +9,17 @@
|
|||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <asm/arch/cache.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
void *board_fdt_blob_setup(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_OF_SEPARATE)) {
|
||||
if (gd->arch.firmware_fdt_addr)
|
||||
return (ulong *)gd->arch.firmware_fdt_addr;
|
||||
else
|
||||
return (ulong *)&_end;
|
||||
}
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue