Home | History | Annotate | Download | only in core
      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
     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 
     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 
     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