mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-26 15:28:50 +00:00

Right now the u-boot,dm-pre-reloc flag will make each marked node always appear in both spl and tpl. But systems needing an additional tpl might have special constraints for each, like the spl needing to be very tiny. So introduce two additional flags to mark nodes for only spl or tpl environments and introduce a function dm_fdt_pre_reloc to automate the necessary checks in code instances checking for pre-relocation flags. The behaviour of the original flag stays untouched and still marks a node for both spl and tpl. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Kever Yang <kever.yang@rock-chips.com>
62 lines
1.1 KiB
C
62 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2013 Google, Inc
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <libfdt.h>
|
|
#include <vsprintf.h>
|
|
|
|
void dm_warn(const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
va_end(args);
|
|
}
|
|
|
|
void dm_dbg(const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
va_end(args);
|
|
}
|
|
|
|
int list_count_items(struct list_head *head)
|
|
{
|
|
struct list_head *node;
|
|
int count = 0;
|
|
|
|
list_for_each(node, head)
|
|
count++;
|
|
|
|
return count;
|
|
}
|
|
|
|
int dm_fdt_pre_reloc(const void *blob, int offset)
|
|
{
|
|
if (fdt_getprop(blob, offset, "u-boot,dm-pre-reloc", NULL))
|
|
return 1;
|
|
|
|
#ifdef CONFIG_TPL_BUILD
|
|
if (fdt_getprop(blob, offset, "u-boot,dm-tpl", NULL))
|
|
return 1;
|
|
#elif defined(CONFIG_SPL_BUILD)
|
|
if (fdt_getprop(blob, offset, "u-boot,dm-spl", NULL))
|
|
return 1;
|
|
#else
|
|
/*
|
|
* In regular builds individual spl and tpl handling both
|
|
* count as handled pre-relocation for later second init.
|
|
*/
|
|
if (fdt_getprop(blob, offset, "u-boot,dm-spl", NULL) ||
|
|
fdt_getprop(blob, offset, "u-boot,dm-tpl", NULL))
|
|
return 1;
|
|
#endif
|
|
|
|
return 0;
|
|
}
|