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