diff options
Diffstat (limited to 'common/fdt_support.c')
| -rw-r--r-- | common/fdt_support.c | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/common/fdt_support.c b/common/fdt_support.c index 718b635d9..166f5e145 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -1151,4 +1151,22 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,  	return -FDT_ERR_NOTFOUND;  } +/** + * fdt_alloc_phandle: Return next free phandle value + * + * @blob: ptr to device tree + */ +int fdt_alloc_phandle(void *blob) +{ +	int offset, len, phandle = 0; +	const u32 *val; + +	for (offset = fdt_next_node(blob, -1, NULL); offset >= 0; +	     offset = fdt_next_node(blob, offset, NULL)) { +		val = fdt_getprop(blob, offset, "linux,phandle", &len); +		if (val) +			phandle = max(*val, phandle); +	} +	return phandle + 1; +} |