fdt: introduce fdt_create_phandle()
PATCH 1/2 fdt: introduce fdt_create_phandle()
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".
--- common/fdt_support.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 41 insertions(+), 0 deletions(-)
common/fdt_support.c +40 -0
@@ -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) {
include/fdt_support.h +1 -0
@@ -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 */
Signature · 1 line
1.7.3.4
PATCH v2 2/2 powerpc/85xx: add support the ePAPR "phandle" property
The ePAPR specification says that phandle properties should be called "phandle", and not "linux,phandle". To facilitate the migration from "linux,phandle" to "phandle", we update fdt_qportal() to use the new function, fdt_create_phandle(). This function abstracts the creation of phandle properties.
--- arch/powerpc/cpu/mpc85xx/portals.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
arch/powerpc/cpu/mpc85xx/portals.c +3 -2
@@ -151,8 +151,9 @@ static int fdt_qportal(void *blob, int off, int id, char *name, dev_handle =fdt_get_phandle (blob, dev_off);if (dev_handle <=0 ) { dev_handle =fdt_alloc_phandle (blob); -fdt_setprop_cell (blob, dev_off, -"linux,phandle" , dev_handle); + ret =fdt_create_phandle (blob, dev_off, dev_handle); +if (ret <0 ) +return ret; } ret = fdt_setprop(blob, childoff, "dev-handle",
Signature · 1 line
1.7.3.4
PATCH v2 2/2 powerpc/85xx: add support the ePAPR "phandle" property
Dear Timur Tabi,
Quoted 16 lines · In message <[email protected]> you 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", we update
fdt_qportal()to use the new function,fdt_create_phandle(). This function abstracts the creation of phandle properties.Signed-off-by Timur Tabi <[email protected]>--- arch/powerpc/cpu/mpc85xx/portals.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)arch/powerpc/cpu/mpc85xx/portals.c +0
-0
arch/powerpc/cpu/mpc85xx/portals.c static int fdt_qportal(void *blob, int off, int id, char *name, · line 154
Quoted 6 lines
arch/powerpc/cpu/mpc85xx/portals.c +1
-2@@ -151,8 +151,9 @@ static int fdt_qportal(void *blob, int off, int id, char *name, dev_handle =fdt_get_phandle (blob, dev_off);if (dev_handle <=0 ) { dev_handle =fdt_alloc_phandle (blob); -fdt_setprop_cell (blob, dev_off, -"linux,phandle" , dev_handle); + ret =fdt_create_phandle (blob, dev_off, dev_handle);
Line too long.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Power is danger. -- The Centurion, "Balance of Terror", stardate 1709.2
PATCH 1/2 fdt: introduce fdt_create_phandle()
In reply to Timur TabiQuoted 7 lines · Timur Tabi
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".
Quoted 5 lines
Signed-off-by Timur Tabi <[email protected]>---
common/fdt_support.c| 40 ++++++++++++++++++++++++++++++++++++++++include/fdt_support.h| 1 +2 files changed, 41 insertions(+), 0 deletions(-)
Jerry,
Any comments on this?
- k
Quoted 71 lines
common/fdt_support.c +40
-0@@ -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) {include/fdt_support.h +1
-0@@ -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 */ Signature · 7 lines
1.7.3.4 _______________________________________________ U-Boot mailing list U-Boot at lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
PATCH 1/2 fdt: introduce fdt_create_phandle()
Quoted 16 lines · Kumar Gala
Quoted 7 lines · Timur Tabi
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".Quoted 5 lines
Signed-off-by Timur Tabi<[email protected]>---
common/fdt_support.c| 40 ++++++++++++++++++++++++++++++++++++++++include/fdt_support.h| 1 +2 files changed, 41 insertions(+), 0 deletions(-)
Quoted 5 lines
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() andfdt_get_base_address() 2011-05-03 Timur Tabi gvb New
Hollor if I'm missing something.
Thanks,
gvb
PATCH 1/2 fdt: introduce fdt_create_phandle()
Quoted 29 lines · Gerald Van Baren
Quoted 16 lines · Kumar Gala
Quoted 7 lines · Timur Tabi
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".Quoted 5 lines
Signed-off-by Timur Tabi<[email protected]>---
common/fdt_support.c| 40 ++++++++++++++++++++++++++++++++++++++++include/fdt_support.h| 1 +2 files changed, 41 insertions(+), 0 deletions(-)Quoted 5 lines
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...
Quoted 10 lines
[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: introducefdt_create_phandle()2011-05-10 Timur
Tabi gvb New
[U-Boot,1/2] fdt: add prototype forfdt_increase_size()2011-05-03
Timur Tabi gvb New
[U-Boot,1/2,v2] fdt: introducefdt_verify_alias_address()andfdt_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
PATCH 1/2 fdt: introduce fdt_create_phandle()
In reply to Timur TabiQuoted 7 lines · Timur Tabi
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".
Quoted 5 lines
Signed-off-by Timur Tabi<[email protected]>--- common/fdt_support.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 41 insertions(+), 0 deletions(-)
Applied to u-boot-fdt.
Thanks,
gvb