Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a9ec7669fc07f80f6e39807f1ac319764a304319
Commit:     a9ec7669fc07f80f6e39807f1ac319764a304319
Parent:     c350038b2bdabb07611dcc8116b55f917ada09fa
Author:     Scott Wood <[EMAIL PROTECTED]>
AuthorDate: Mon Mar 12 14:41:56 2007 -0600
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Fri Mar 16 15:49:11 2007 +1100

    [POWERPC] bootwrapper: Make ft_get_parent() return a phandle, and NULL if 
already top-level.
    
    Most of ft_get_parent() is factored out into __ft_get_parent(), which
    deals only in internal node pointers.  The ft_get_parent() wrapper
    handles phandle conversion in both directions (previously,
    ft_get_parent() did not convert its return value).
    
    It also now returns NULL as the parent of the toplevel node, rather than
    just returning the toplevel node again (which made it rather useless in
    loops).
    
    Signed-off-by: Scott Wood <[EMAIL PROTECTED]>
    Acked-by: Mark A. Greer <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/boot/flatdevtree.c |   21 +++++++++++++--------
 arch/powerpc/boot/flatdevtree.h |    1 +
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/boot/flatdevtree.c b/arch/powerpc/boot/flatdevtree.c
index 9de267d..88b178a 100644
--- a/arch/powerpc/boot/flatdevtree.c
+++ b/arch/powerpc/boot/flatdevtree.c
@@ -728,20 +728,15 @@ void *ft_find_descendent(struct ft_cxt *cxt, void *top, 
const char *srch_path)
        return NULL;
 }
 
-void *ft_get_parent(struct ft_cxt *cxt, const void *phandle)
+void *__ft_get_parent(struct ft_cxt *cxt, void *node)
 {
-       void *node;
        int d;
        struct ft_atom atom;
        char *p;
 
-       node = ft_node_ph2node(cxt, phandle);
-       if (node == NULL)
-               return NULL;
-
        for (d = 0; cxt->genealogy[d] != NULL; ++d)
                if (cxt->genealogy[d] == node)
-                       return cxt->genealogy[d > 0 ? d - 1 : 0];
+                       return d > 0 ? cxt->genealogy[d - 1] : NULL;
 
        /* have to do it the hard way... */
        p = ft_root_node(cxt);
@@ -753,7 +748,7 @@ void *ft_get_parent(struct ft_cxt *cxt, const void *phandle)
                        if (node == atom.data) {
                                /* found it */
                                cxt->genealogy[d + 1] = NULL;
-                               return d > 0 ? cxt->genealogy[d - 1] : node;
+                               return d > 0 ? cxt->genealogy[d - 1] : NULL;
                        }
                        ++d;
                        break;
@@ -765,6 +760,16 @@ void *ft_get_parent(struct ft_cxt *cxt, const void 
*phandle)
        return NULL;
 }
 
+void *ft_get_parent(struct ft_cxt *cxt, const void *phandle)
+{
+       void *node = ft_node_ph2node(cxt, phandle);
+       if (node == NULL)
+               return NULL;
+
+       node = __ft_get_parent(cxt, node);
+       return ft_get_phandle(cxt, node);
+}
+
 static const void *__ft_get_prop(struct ft_cxt *cxt, void *node,
                                  const char *propname, unsigned int *len)
 {
diff --git a/arch/powerpc/boot/flatdevtree.h b/arch/powerpc/boot/flatdevtree.h
index 1f37ca2..9500424 100644
--- a/arch/powerpc/boot/flatdevtree.h
+++ b/arch/powerpc/boot/flatdevtree.h
@@ -104,5 +104,6 @@ int ft_get_prop(struct ft_cxt *cxt, const void *phandle, 
const char *propname,
                void *buf, const unsigned int buflen);
 int ft_set_prop(struct ft_cxt *cxt, const void *phandle, const char *propname,
                const void *buf, const unsigned int buflen);
+void *ft_get_parent(struct ft_cxt *cxt, const void *phandle);
 
 #endif /* FLATDEVTREE_H */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to