Home | History | Annotate | Download | only in lib
      1 // SPDX-License-Identifier: GPL-2.0+
      2 /*
      3  * Copyright (c) 2014
      4  * Heiko Schocher, DENX Software Engineering, hs (at) denx.de.
      5  *
      6  * Based on lib/fdtdec.c:
      7  * Copyright (c) 2011 The Chromium OS Authors.
      8  */
      9 
     10 #ifndef USE_HOSTCC
     11 #include <common.h>
     12 #include <linux/libfdt.h>
     13 #include <fdtdec.h>
     14 #else
     15 #include "libfdt.h"
     16 #include "fdt_support.h"
     17 
     18 #define debug(...)
     19 #endif
     20 
     21 int fdtdec_get_int(const void *blob, int node, const char *prop_name,
     22 		int default_val)
     23 {
     24 	const int *cell;
     25 	int len;
     26 
     27 	debug("%s: %s: ", __func__, prop_name);
     28 	cell = fdt_getprop(blob, node, prop_name, &len);
     29 	if (cell && len >= sizeof(int)) {
     30 		int val = fdt32_to_cpu(cell[0]);
     31 
     32 		debug("%#x (%d)\n", val, val);
     33 		return val;
     34 	}
     35 	debug("(not found)\n");
     36 	return default_val;
     37 }
     38 
     39 unsigned int fdtdec_get_uint(const void *blob, int node, const char *prop_name,
     40 			unsigned int default_val)
     41 {
     42 	const int *cell;
     43 	int len;
     44 
     45 	debug("%s: %s: ", __func__, prop_name);
     46 	cell = fdt_getprop(blob, node, prop_name, &len);
     47 	if (cell && len >= sizeof(unsigned int)) {
     48 		unsigned int val = fdt32_to_cpu(cell[0]);
     49 
     50 		debug("%#x (%d)\n", val, val);
     51 		return val;
     52 	}
     53 	debug("(not found)\n");
     54 	return default_val;
     55 }
     56