[U-Boot] [PATCH 04/10] fdt: Add fdt_sizecell & fdt_addrcell helpers

Jerry Van Baren gerald.vanbaren at ge.com
Thu Oct 23 13:55:43 CEST 2008


Kumar Gala wrote:
> Add helper functions to return top level #size-cell and #address-cell info
> 
> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
> ---
>  include/fdt_support.h |   18 ++++++++++++++++++
>  1 files changed, 18 insertions(+), 0 deletions(-)
> 
> diff --git a/include/fdt_support.h b/include/fdt_support.h
> index ceaadc2..aa9d86b 100644
> --- a/include/fdt_support.h
> +++ b/include/fdt_support.h
> @@ -28,6 +28,24 @@
>  
>  #include <fdt.h>
>  
> +static inline int fdt_addrcell(void *blob) {
> +	const u32 *addrcell = fdt_getprop(blob, 0, "#address-cells", NULL);
> +
> +	if (addrcell)
> +		return *addrcell;
> +	else
> +		return 1;
> +}
> +
> +static inline int fdt_sizecell(void *blob) {
> +	const u32 *sizecell = fdt_getprop(blob, 0, "#size-cells", NULL);
> +
> +	if (sizecell)
> +		return *sizecell;
> +	else
> +		return 1;
> +}
> +
>  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,

Hi Kumar,

What about collapsing the two above into a common function?

	fdt_addrcell(blob);
becomes
	fdt_get_prop_u32(blob, "/", "#address-cells", 1);
and
	fdt_sizecell(blob);
becomes
	fdt_get_prop_u32(blob, "/", "#size-cells", 1);

WARNING, UNTESTED CODE:
/**
  * fdt_get_prop_u32: Find a node and return it's property or a default
  *
  * @fdt: ptr to device tree
  * @node: path of node
  * @prop: property name
  * @defalt: 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_get_prop_u32(void *fdt, const char *node, const char *prop,
		     const u32 default)
{
	const u32 *addrcell = fdt_getprop(fdt, node, prop, NULL);

	if (addrcell)
		return *addrcell;
	else
		return default;
}


More information about the U-Boot mailing list