xref: /rk3399_rockchip-uboot/lib/fdtdec_common.c (revision b047d671dbf60beab9822349f794a0152b97ac31)
1*b047d671SHeiko Schocher /*
2*b047d671SHeiko Schocher  * Copyright (c) 2014
3*b047d671SHeiko Schocher  * Heiko Schocher, DENX Software Engineering, hs@denx.de.
4*b047d671SHeiko Schocher  *
5*b047d671SHeiko Schocher  * Based on lib/fdtdec.c:
6*b047d671SHeiko Schocher  * Copyright (c) 2011 The Chromium OS Authors.
7*b047d671SHeiko Schocher  *
8*b047d671SHeiko Schocher  * SPDX-License-Identifier:	GPL-2.0+
9*b047d671SHeiko Schocher  */
10*b047d671SHeiko Schocher 
11*b047d671SHeiko Schocher #ifndef USE_HOSTCC
12*b047d671SHeiko Schocher #include <common.h>
13*b047d671SHeiko Schocher #include <libfdt.h>
14*b047d671SHeiko Schocher #include <fdtdec.h>
15*b047d671SHeiko Schocher #else
16*b047d671SHeiko Schocher #include "libfdt.h"
17*b047d671SHeiko Schocher #include "fdt_support.h"
18*b047d671SHeiko Schocher 
19*b047d671SHeiko Schocher #define debug(...)
20*b047d671SHeiko Schocher #endif
21*b047d671SHeiko Schocher 
22*b047d671SHeiko Schocher int fdtdec_get_int(const void *blob, int node, const char *prop_name,
23*b047d671SHeiko Schocher 		int default_val)
24*b047d671SHeiko Schocher {
25*b047d671SHeiko Schocher 	const int *cell;
26*b047d671SHeiko Schocher 	int len;
27*b047d671SHeiko Schocher 
28*b047d671SHeiko Schocher 	debug("%s: %s: ", __func__, prop_name);
29*b047d671SHeiko Schocher 	cell = fdt_getprop(blob, node, prop_name, &len);
30*b047d671SHeiko Schocher 	if (cell && len >= sizeof(int)) {
31*b047d671SHeiko Schocher 		int val = fdt32_to_cpu(cell[0]);
32*b047d671SHeiko Schocher 
33*b047d671SHeiko Schocher 		debug("%#x (%d)\n", val, val);
34*b047d671SHeiko Schocher 		return val;
35*b047d671SHeiko Schocher 	}
36*b047d671SHeiko Schocher 	debug("(not found)\n");
37*b047d671SHeiko Schocher 	return default_val;
38*b047d671SHeiko Schocher }
39