[U-Boot] [PATCH 1/2] fdt: introduce fdt_create_phandle()
Kumar Gala
kumar.gala at freescale.com
Thu Jul 14 15:31:36 CEST 2011
On May 10, 2011, at 3:14 PM, Timur Tabi wrote:
> The ePAPR specification says that phandle properties should be called
> "phandle", and not "linux,phandle". To facilitate the migration from
> "linux,phandle" to "phandle", introduce function fdt_create_phandle(), which
> creates a phandle in a given node. For now, we create both the "phandle" and
> "linux,phandle" properties. A later version of this function will remove
> support for "linux,phandle".
>
> Signed-off-by: Timur Tabi <timur at freescale.com>
> ---
> common/fdt_support.c | 40 ++++++++++++++++++++++++++++++++++++++++
> include/fdt_support.h | 1 +
> 2 files changed, 41 insertions(+), 0 deletions(-)
Jerry,
Any comments on this?
- k
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index 85715ff..dd9deaf 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -1201,6 +1201,46 @@ int fdt_alloc_phandle(void *blob)
> return phandle + 1;
> }
>
> +/*
> + * fdt_create_phandle: Create a phandle property for the given node
> + *
> + * @fdt: ptr to device tree
> + * @nodeoffset: node to update
> + * @phandle: phandle value to set (must be unique)
> +*/
> +int fdt_create_phandle(void *fdt, int nodeoffset, uint32_t phandle)
> +{
> + int ret;
> +
> +#ifdef DEBUG
> + int off = fdt_node_offset_by_phandle(fdt, phandle);
> +
> + if ((off >= 0) && (off != nodeoffset)) {
> + char buf[64];
> +
> + fdt_get_path(fdt, nodeoffset, buf, sizeof(buf));
> + printf("Trying to update node %s with phandle %u ",
> + buf, phandle);
> +
> + fdt_get_path(fdt, off, buf, sizeof(buf));
> + printf("that already exists in node %s.\n", buf);
> + return -FDT_ERR_BADPHANDLE;
> + }
> +#endif
> +
> + ret = fdt_setprop_cell(fdt, nodeoffset, "phandle", phandle);
> + if (ret < 0)
> + return ret;
> +
> + /*
> + * For now, also set the deprecated "linux,phandle" property, so that we
> + * don't break older kernels.
> + */
> + ret = fdt_setprop_cell(fdt, nodeoffset, "linux,phandle", phandle);
> +
> + return ret;
> +}
> +
> #if defined(CONFIG_VIDEO)
> int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
> {
> diff --git a/include/fdt_support.h b/include/fdt_support.h
> index ce6817b..366062f 100644
> --- a/include/fdt_support.h
> +++ b/include/fdt_support.h
> @@ -88,6 +88,7 @@ u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr);
> int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
> phys_addr_t compat_off);
> int fdt_alloc_phandle(void *blob);
> +int fdt_create_phandle(void *fdt, int nodeoffset, uint32_t phandle);
> int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
>
> #endif /* ifdef CONFIG_OF_LIBFDT */
> --
> 1.7.3.4
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list