diff options
| -rw-r--r-- | common/fdt_support.c | 27 | ||||
| -rw-r--r-- | include/fdt_support.h | 2 | 
2 files changed, 29 insertions, 0 deletions
| diff --git a/common/fdt_support.c b/common/fdt_support.c index 8ceeb0faa..f4307774d 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -35,6 +35,33 @@   */  DECLARE_GLOBAL_DATA_PTR; +/** + * fdt_getprop_u32_default - Find a node and return it's property or a default + * + * @fdt: ptr to device tree + * @path: path of node + * @prop: property name + * @dflt: default value if the property isn't found + * + * Convenience function to find a node and return it's property or a + * default value if it doesn't exist. + */ +u32 fdt_getprop_u32_default(void *fdt, const char *path, const char *prop, +				const u32 dflt) +{ +	const u32 *val; +	int off; + +	off = fdt_path_offset(fdt, path); +	if (off < 0) +		return dflt; + +	val = fdt_getprop(fdt, off, prop, NULL); +	if (val) +		return *val; +	else +		return dflt; +}  /**   * fdt_find_and_setprop: Find a node and set it's property diff --git a/include/fdt_support.h b/include/fdt_support.h index ceaadc2be..816c9d08b 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -28,6 +28,8 @@  #include <fdt.h> +u32 fdt_getprop_u32_default(void *fdt, const char *path, const char *prop, +				const u32 dflt);  int fdt_chosen(void *fdt, int force);  int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force);  void do_fixup_by_path(void *fdt, const char *path, const char *prop, |