Message ID | 1305058491-19720-1-git-send-email-timur@freescale.com |
---|---|
State | Accepted |
Delegated to: | Jerry Van Baren |
Headers | show |
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@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@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
On 07/14/2011 09:31 AM, Kumar Gala wrote: > > 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@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 I put it in my todo list on patchworks. What I have queued are two patches from upstream 0329-Support-ePAPR-compliant-phandle-properties.patch 0344-libfdt-Implement-property-iteration-functions.patch and... [U-Boot,v2] Add uboot "fdt_high" enviroment variable 2011-07-09 David A. Long gvb New [U-Boot,2/2,v3] powerpc/85xx: add support the ePAPR "phandle" property 2011-05-10 Timur Tabi gvb New [U-Boot,1/2] fdt: introduce fdt_create_phandle() 2011-05-10 Timur Tabi gvb New [U-Boot,1/2] fdt: add prototype for fdt_increase_size() 2011-05-03 Timur Tabi gvb New [U-Boot,1/2,v2] fdt: introduce fdt_verify_alias_address() and fdt_get_base_address() 2011-05-03 Timur Tabi gvb New Hollor if I'm missing something. Thanks, gvb
On Jul 14, 2011, at 9:01 AM, Gerald Van Baren wrote: > On 07/14/2011 09:31 AM, Kumar Gala wrote: >> >> 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@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 > > I put it in my todo list on patchworks. What I have queued are two > patches from upstream > 0329-Support-ePAPR-compliant-phandle-properties.patch > 0344-libfdt-Implement-property-iteration-functions.patch > and... > > [U-Boot,v2] Add uboot "fdt_high" enviroment variable 2011-07-09 David > A. Long gvb New > [U-Boot,2/2,v3] powerpc/85xx: add support the ePAPR "phandle" property > 2011-05-10 Timur Tabi gvb New > [U-Boot,1/2] fdt: introduce fdt_create_phandle() 2011-05-10 Timur > Tabi gvb New > [U-Boot,1/2] fdt: add prototype for fdt_increase_size() 2011-05-03 > Timur Tabi gvb New > [U-Boot,1/2,v2] fdt: introduce fdt_verify_alias_address() and > fdt_get_base_address() 2011-05-03 Timur Tabi gvb New I'd add: http://patchwork.ozlabs.org/patch/103598/ at least for a review/ack. - k
On 05/10/2011 04: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@freescale.com> > --- > common/fdt_support.c | 40 ++++++++++++++++++++++++++++++++++++++++ > include/fdt_support.h | 1 + > 2 files changed, 41 insertions(+), 0 deletions(-) Applied to u-boot-fdt. Thanks, gvb
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 */
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@freescale.com> --- common/fdt_support.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 41 insertions(+), 0 deletions(-)