Re: [U-Boot] [PATCH] libfdt: introduce function fdt_get_max_phandle

2010-07-10 Thread Kumar Gala

On May 26, 2010, at 9:38 PM, Jerry Van Baren wrote:

 Wolfgang Denk wrote:
 Dear Timur Tabi,
 
 In message 1274308618-2974-1-git-send-email-ti...@freescale.com you wrote:
 Introduce function fdt_get_max_phandle(), which returns the largest value
 of all phandles in a device tree.  This is useful for allocating a new 
 phandle
 property, since all phandles must be unique.
 
 Signed-off-by: Timur Tabi ti...@freescale.com
 ---
 include/libfdt.h|   20 
 lib/libfdt/fdt_ro.c |   17 +
 2 files changed, 37 insertions(+), 0 deletions(-)
 
 Please submit as part of a patch / patch series that acrtually uses
 this feature.  As is, it's just dead code that has no users.
 
 I'm happy with this in principle, and will ack formally when the 
 community is OK with the code change.  It looks like a positive 
 improvement to me, reducing complexity and addressing Timur/Freescale's 
 needs.  Anyway, I envision acking the patch and having FSL include it 
 in whatever MPC8xxx patchset that actually needs the changes.
 
 Thanks and best regards,
 gvb

We should NOT add code to libfdt if we can avoid it.  We should be doing this 
in fdt_support.c.  libfdt changes should first go to dtc.

- k
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] libfdt: introduce function fdt_get_max_phandle

2010-05-26 Thread Wolfgang Denk
Dear Timur Tabi,

In message 1274308618-2974-1-git-send-email-ti...@freescale.com you wrote:
 Introduce function fdt_get_max_phandle(), which returns the largest value
 of all phandles in a device tree.  This is useful for allocating a new phandle
 property, since all phandles must be unique.
 
 Signed-off-by: Timur Tabi ti...@freescale.com
 ---
  include/libfdt.h|   20 
  lib/libfdt/fdt_ro.c |   17 +
  2 files changed, 37 insertions(+), 0 deletions(-)

Please submit as part of a patch / patch series that acrtually uses
this feature.  As is, it's just dead code that has no users.

 +int fdt_get_max_phandle(const void *fdt)
 +{
 + int offset;
 + uint32_t temp, phandle = 0;
 +
 + FDT_CHECK_HEADER(fdt);
 +
 + for (offset = fdt_next_node(fdt, -1, NULL); offset = 0;
 +  offset = fdt_next_node(fdt, offset, NULL)) {
 + temp = fdt_get_phandle(fdt, offset);
 + if (temp  phandle)
 + phandle = temp;
 + }
 +
 + return phandle;
 +}

As fdt_get_phandle() returns a uint32_t, fdt_get_max_phandle() should
return the same type, not int.

Best regards,

Wolfgang Denk

-- 
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: w...@denx.de
Star Trek Lives!
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] libfdt: introduce function fdt_get_max_phandle

2010-05-26 Thread Jerry Van Baren
Wolfgang Denk wrote:
 Dear Timur Tabi,
 
 In message 1274308618-2974-1-git-send-email-ti...@freescale.com you wrote:
 Introduce function fdt_get_max_phandle(), which returns the largest value
 of all phandles in a device tree.  This is useful for allocating a new 
 phandle
 property, since all phandles must be unique.

 Signed-off-by: Timur Tabi ti...@freescale.com
 ---
  include/libfdt.h|   20 
  lib/libfdt/fdt_ro.c |   17 +
  2 files changed, 37 insertions(+), 0 deletions(-)
 
 Please submit as part of a patch / patch series that acrtually uses
 this feature.  As is, it's just dead code that has no users.

I'm happy with this in principle, and will ack formally when the 
community is OK with the code change.  It looks like a positive 
improvement to me, reducing complexity and addressing Timur/Freescale's 
needs.  Anyway, I envision acking the patch and having FSL include it 
in whatever MPC8xxx patchset that actually needs the changes.

Thanks and best regards,
gvb

[snip improvement suggestion]
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] libfdt: introduce function fdt_get_max_phandle

2010-05-19 Thread Timur Tabi
Introduce function fdt_get_max_phandle(), which returns the largest value
of all phandles in a device tree.  This is useful for allocating a new phandle
property, since all phandles must be unique.

Signed-off-by: Timur Tabi ti...@freescale.com
---
 include/libfdt.h|   20 
 lib/libfdt/fdt_ro.c |   17 +
 2 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/include/libfdt.h b/include/libfdt.h
index d23d40e..62c4e5b 100644
--- a/include/libfdt.h
+++ b/include/libfdt.h
@@ -833,6 +833,26 @@ int fdt_nop_property(void *fdt, int nodeoffset, const char 
*name);
  */
 int fdt_nop_node(void *fdt, int nodeoffset);
 
+/**
+ * fdt_get_max_phandle - return the largest value of all phandles in the fdt
+ * @fdt: pointer to the device tree blob
+ *
+ * fdt_get_max_phandle() returns the largest value of all phandles.
+ *
+ * phandles are generally numbered sequentially from 1.  To allow U-Boot to
+ * create a new phandle property, the value of that phandle must be unique.
+ * The safest way to do that is to determine the largest value among all
+ * phandles, and set the new phandle to that value plus one.
+ *
+ * returns:
+ * 0, there are no phandles in the fdt
+ * 0, the largest value of the phandles
+ * -FDT_ERR_BADMAGIC,
+ * -FDT_ERR_BADVERSION,
+ * -FDT_ERR_BADSTATE, standard meanings
+ */
+int fdt_get_max_phandle(const void *fdt);
+
 /**/
 /* Sequential write functions */
 /**/
diff --git a/lib/libfdt/fdt_ro.c b/lib/libfdt/fdt_ro.c
index 1e1e322..4a4a84b 100644
--- a/lib/libfdt/fdt_ro.c
+++ b/lib/libfdt/fdt_ro.c
@@ -504,3 +504,20 @@ int fdt_node_offset_by_compatible(const void *fdt, int 
startoffset,
 
return offset; /* error from fdt_next_node() */
 }
+
+int fdt_get_max_phandle(const void *fdt)
+{
+   int offset;
+   uint32_t temp, phandle = 0;
+
+   FDT_CHECK_HEADER(fdt);
+
+   for (offset = fdt_next_node(fdt, -1, NULL); offset = 0;
+offset = fdt_next_node(fdt, offset, NULL)) {
+   temp = fdt_get_phandle(fdt, offset);
+   if (temp  phandle)
+   phandle = temp;
+   }
+
+   return phandle;
+}
-- 
1.6.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot