blob: 7dc1a2af0282cf7ddecc749dc66fc3bc8851051c [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Simon Glassdd6ab882014-02-26 15:59:18 -07002/*
3 * Copyright (c) 2013 Google, Inc
Simon Glassdd6ab882014-02-26 15:59:18 -07004 */
5
6#include <common.h>
Bin Mengdddc3a82018-10-10 22:06:57 -07007#include <dm/ofnode.h>
Masahiro Yamada3247fdb2017-06-22 16:50:01 +09008#include <dm/util.h>
Masahiro Yamada75f82d02018-03-05 01:20:11 +09009#include <linux/libfdt.h>
Simon Glassdd6ab882014-02-26 15:59:18 -070010#include <vsprintf.h>
11
Masahiro Yamada3247fdb2017-06-22 16:50:01 +090012#ifdef CONFIG_DM_WARN
Simon Glassdd6ab882014-02-26 15:59:18 -070013void dm_warn(const char *fmt, ...)
14{
15 va_list args;
16
17 va_start(args, fmt);
18 vprintf(fmt, args);
19 va_end(args);
20}
Masahiro Yamada3247fdb2017-06-22 16:50:01 +090021#endif
Simon Glassdd6ab882014-02-26 15:59:18 -070022
Simon Glassdd6ab882014-02-26 15:59:18 -070023int list_count_items(struct list_head *head)
24{
25 struct list_head *node;
26 int count = 0;
27
28 list_for_each(node, head)
29 count++;
30
31 return count;
32}
Heiko Stübner9a2cdca2017-02-18 19:46:21 +010033
Marek Vasut7f18c342019-08-31 18:03:28 +020034#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
Bin Mengdddc3a82018-10-10 22:06:57 -070035bool dm_ofnode_pre_reloc(ofnode node)
36{
Patrick Delaunay0b025b82019-02-11 12:49:57 +010037#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_TPL_BUILD)
38 /* for SPL and TPL the remaining nodes after the fdtgrep 1st pass
39 * had property dm-pre-reloc or u-boot,dm-spl/tpl.
40 * They are removed in final dtb (fdtgrep 2nd pass)
41 */
42 return true;
43#else
Bin Mengdddc3a82018-10-10 22:06:57 -070044 if (ofnode_read_bool(node, "u-boot,dm-pre-reloc"))
45 return true;
Patrick Delaunayd1937182019-05-21 19:19:12 +020046 if (ofnode_read_bool(node, "u-boot,dm-pre-proper"))
47 return true;
Bin Mengdddc3a82018-10-10 22:06:57 -070048
Bin Mengdddc3a82018-10-10 22:06:57 -070049 /*
50 * In regular builds individual spl and tpl handling both
51 * count as handled pre-relocation for later second init.
52 */
53 if (ofnode_read_bool(node, "u-boot,dm-spl") ||
54 ofnode_read_bool(node, "u-boot,dm-tpl"))
55 return true;
Bin Mengdddc3a82018-10-10 22:06:57 -070056
57 return false;
Patrick Delaunay0b025b82019-02-11 12:49:57 +010058#endif
Bin Mengdddc3a82018-10-10 22:06:57 -070059}
Marek Vasut7f18c342019-08-31 18:03:28 +020060#endif