1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3 * Copyright (c) 2013 Google, Inc
4 */
5
6 #include <common.h>
7 #include <dm/util.h>
8 #include <linux/libfdt.h>
9 #include <vsprintf.h>
10
11 #ifdef CONFIG_DM_WARN
dm_warn(const char * fmt,...)12 void dm_warn(const char *fmt, ...)
13 {
14 va_list args;
15
16 va_start(args, fmt);
17 vprintf(fmt, args);
18 va_end(args);
19 }
20 #endif
21
list_count_items(struct list_head * head)22 int list_count_items(struct list_head *head)
23 {
24 struct list_head *node;
25 int count = 0;
26
27 list_for_each(node, head)
28 count++;
29
30 return count;
31 }
32
dm_fdt_pre_reloc(const void * blob,int offset)33 bool dm_fdt_pre_reloc(const void *blob, int offset)
34 {
35 if (fdt_getprop(blob, offset, "u-boot,dm-pre-reloc", NULL))
36 return true;
37
38 #ifdef CONFIG_TPL_BUILD
39 if (fdt_getprop(blob, offset, "u-boot,dm-tpl", NULL))
40 return true;
41 #elif defined(CONFIG_SPL_BUILD)
42 if (fdt_getprop(blob, offset, "u-boot,dm-spl", NULL))
43 return true;
44 #else
45 /*
46 * In regular builds individual spl and tpl handling both
47 * count as handled pre-relocation for later second init.
48 */
49 if (fdt_getprop(blob, offset, "u-boot,dm-spl", NULL) ||
50 fdt_getprop(blob, offset, "u-boot,dm-tpl", NULL))
51 return true;
52 #endif
53
54 return false;
55 }
56