xref: /openbmc/u-boot/include/dm/util.h (revision 4a2b2724)
1 /*
2  * Copyright (c) 2013 Google, Inc
3  *
4  * SPDX-License-Identifier:	GPL-2.0+
5  */
6 
7 #ifndef __DM_UTIL_H
8 #define __DM_UTIL_H
9 
10 #ifdef CONFIG_DM_WARN
11 void dm_warn(const char *fmt, ...);
12 #else
13 static inline void dm_warn(const char *fmt, ...)
14 {
15 }
16 #endif
17 
18 #ifdef DEBUG
19 void dm_dbg(const char *fmt, ...);
20 #else
21 static inline void dm_dbg(const char *fmt, ...)
22 {
23 }
24 #endif
25 
26 struct list_head;
27 
28 /**
29  * list_count_items() - Count number of items in a list
30  *
31  * @param head:		Head of list
32  * @return number of items, or 0 if empty
33  */
34 int list_count_items(struct list_head *head);
35 
36 /* Dump out a tree of all devices */
37 void dm_dump_all(void);
38 
39 /* Dump out a list of uclasses and their devices */
40 void dm_dump_uclass(void);
41 
42 #ifdef CONFIG_DEBUG_DEVRES
43 /* Dump out a list of device resources */
44 void dm_dump_devres(void);
45 #else
46 static inline void dm_dump_devres(void)
47 {
48 }
49 #endif
50 
51 /**
52  * Check if a dt node should be or was bound before relocation.
53  *
54  * Devicetree nodes can be marked as needed to be bound
55  * in the loader stages via special devicetree properties.
56  *
57  * Before relocation this function can be used to check if nodes
58  * are required in either SPL or TPL stages.
59  *
60  * After relocation and jumping into the real U-Boot binary
61  * it is possible to determine if a node was bound in one of
62  * SPL/TPL stages.
63  *
64  * There are 3 settings currently in use
65  * -
66  * - u-boot,dm-pre-reloc: legacy and indicates any of TPL or SPL
67  *   Existing platforms only use it to indicate nodes needee in
68  *   SPL. Should probably be replaced by u-boot,dm-spl for
69  *   existing platforms.
70  * @blob: devicetree
71  * @offset: node offset
72  *
73  * Returns true if node is needed in SPL/TL, false otherwise.
74  */
75 bool dm_fdt_pre_reloc(const void *blob, int offset);
76 
77 #endif
78