Patchwork [05/31] dt: add helper for phandle enumeration

login
register
mail settings
Submitter Alexander Graf
Date June 19, 2012, 7:14 p.m.
Message ID <1340133324-352-6-git-send-email-agraf@suse.de>
Download mbox | patch
Permalink /patch/165836/
State New
Headers show

Comments

Alexander Graf - June 19, 2012, 7:14 p.m.
This patch adds a helper to search for a node's phandle by its path. This
is especially useful when the phandle is part of an array, not just a single
cell in which case qemu_devtree_setprop_phandle would be the easy choice.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 device_tree.c |   16 +++++++++++++++-
 device_tree.h |    1 +
 2 files changed, 16 insertions(+), 1 deletions(-)
Peter A. G. Crosthwaite - June 21, 2012, 4:31 a.m.
On Tue, 2012-06-19 at 21:14 +0200, Alexander Graf wrote:
> This patch adds a helper to search for a node's phandle by its path. This
> is especially useful when the phandle is part of an array, not just a single
> cell in which case qemu_devtree_setprop_phandle would be the easy choice.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>

Reviewed-by: Peter Crosthwaite <peter.crosthwaite@petalogix.com>

> ---
>  device_tree.c |   16 +++++++++++++++-
>  device_tree.h |    1 +
>  2 files changed, 16 insertions(+), 1 deletions(-)
> 
> diff --git a/device_tree.c b/device_tree.c
> index 967c97a..2f127b7 100644
> --- a/device_tree.c
> +++ b/device_tree.c
> @@ -132,11 +132,25 @@ int qemu_devtree_setprop_string(void *fdt, const char *node_path,
>      return r;
>  }
>  
> +uint32_t qemu_devtree_get_phandle(void *fdt, const char *path)
> +{
> +    uint32_t r;
> +
> +    r = fdt_get_phandle(fdt, findnode_nofail(fdt, path));
> +    if (r <= 0) {
> +        fprintf(stderr, "%s: Couldn't get phandle for %s: %s\n", __func__,
> +                path, fdt_strerror(r));
> +        exit(1);
> +    }
> +
> +    return r;
> +}
> +
>  int qemu_devtree_setprop_phandle(void *fdt, const char *node_path,
>                                   const char *property,
>                                   const char *target_node_path)
>  {
> -    uint32_t phandle = fdt_get_phandle(fdt, findnode_nofail(fdt, target_node_path));
> +    uint32_t phandle = qemu_devtree_get_phandle(fdt, target_node_path);
>      return qemu_devtree_setprop_cell(fdt, node_path, property, phandle);
>  }
>  
> diff --git a/device_tree.h b/device_tree.h
> index 754bd2b..36fc9db 100644
> --- a/device_tree.h
> +++ b/device_tree.h
> @@ -25,6 +25,7 @@ int qemu_devtree_setprop_string(void *fdt, const char *node_path,
>  int qemu_devtree_setprop_phandle(void *fdt, const char *node_path,
>                                   const char *property,
>                                   const char *target_node_path);
> +uint32_t qemu_devtree_get_phandle(void *fdt, const char *path);
>  int qemu_devtree_nop_node(void *fdt, const char *node_path);
>  int qemu_devtree_add_subnode(void *fdt, const char *name);
>

Patch

diff --git a/device_tree.c b/device_tree.c
index 967c97a..2f127b7 100644
--- a/device_tree.c
+++ b/device_tree.c
@@ -132,11 +132,25 @@  int qemu_devtree_setprop_string(void *fdt, const char *node_path,
     return r;
 }
 
+uint32_t qemu_devtree_get_phandle(void *fdt, const char *path)
+{
+    uint32_t r;
+
+    r = fdt_get_phandle(fdt, findnode_nofail(fdt, path));
+    if (r <= 0) {
+        fprintf(stderr, "%s: Couldn't get phandle for %s: %s\n", __func__,
+                path, fdt_strerror(r));
+        exit(1);
+    }
+
+    return r;
+}
+
 int qemu_devtree_setprop_phandle(void *fdt, const char *node_path,
                                  const char *property,
                                  const char *target_node_path)
 {
-    uint32_t phandle = fdt_get_phandle(fdt, findnode_nofail(fdt, target_node_path));
+    uint32_t phandle = qemu_devtree_get_phandle(fdt, target_node_path);
     return qemu_devtree_setprop_cell(fdt, node_path, property, phandle);
 }
 
diff --git a/device_tree.h b/device_tree.h
index 754bd2b..36fc9db 100644
--- a/device_tree.h
+++ b/device_tree.h
@@ -25,6 +25,7 @@  int qemu_devtree_setprop_string(void *fdt, const char *node_path,
 int qemu_devtree_setprop_phandle(void *fdt, const char *node_path,
                                  const char *property,
                                  const char *target_node_path);
+uint32_t qemu_devtree_get_phandle(void *fdt, const char *path);
 int qemu_devtree_nop_node(void *fdt, const char *node_path);
 int qemu_devtree_add_subnode(void *fdt, const char *name);