qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 06/31] dt: add helper for empty dt creation


From: Peter Crosthwaite
Subject: Re: [Qemu-devel] [PATCH 06/31] dt: add helper for empty dt creation
Date: Wed, 06 Jun 2012 15:34:23 +1000

On Wed, 2012-06-06 at 01:52 +0200, Alexander Graf wrote:
> We want to get rid of the concept of loading an external device tree and 
> instead
> generate our own. However, to do this we need to also create a device tree
> template programatically.
> 
> This patch adds a helper to create an empty device tree in memory.
> 
> Signed-off-by: Alexander Graf <address@hidden>

Reviewed-by: Peter Crosthwaite <address@hidden>

> ---
>  device_tree.c |   37 +++++++++++++++++++++++++++++++++++++
>  device_tree.h |    1 +
>  2 files changed, 38 insertions(+), 0 deletions(-)
> 
> diff --git a/device_tree.c b/device_tree.c
> index 6745d17..d4f1f0a 100644
> --- a/device_tree.c
> +++ b/device_tree.c
> @@ -25,6 +25,43 @@
>  
>  #include <libfdt.h>
>  
> +#define FDT_MAX_SIZE  0x10000
> +
> +void *create_device_tree(int *sizep)
> +{
> +    void *fdt;
> +    int ret;
> +
> +    *sizep = FDT_MAX_SIZE;
> +    fdt = g_malloc0(FDT_MAX_SIZE);
> +    ret = fdt_create(fdt, FDT_MAX_SIZE);
> +    if (ret < 0) {
> +        goto fail;
> +    }
> +    ret = fdt_begin_node(fdt, "");
> +    if (ret < 0) {
> +        goto fail;
> +    }
> +    ret = fdt_end_node(fdt);
> +    if (ret < 0) {
> +        goto fail;
> +    }
> +    ret = fdt_finish(fdt);
> +    if (ret < 0) {
> +        goto fail;
> +    }
> +    ret = fdt_open_into(fdt, fdt, *sizep);
> +    if (ret) {
> +        fprintf(stderr, "Unable to copy device tree in memory\n");
> +        exit(1);
> +    }
> +
> +    return fdt;
> +fail:
> +    fprintf(stderr, "%s Couldn't create dt: %s\n", __func__, 
> fdt_strerror(ret));
> +    exit(1);
> +}
> +
>  void *load_device_tree(const char *filename_path, int *sizep)
>  {
>      int dt_size;
> diff --git a/device_tree.h b/device_tree.h
> index 376287a..5464dc7 100644
> --- a/device_tree.h
> +++ b/device_tree.h
> @@ -14,6 +14,7 @@
>  #ifndef __DEVICE_TREE_H__
>  #define __DEVICE_TREE_H__
>  
> +void *create_device_tree(int *sizep);
>  void *load_device_tree(const char *filename_path, int *sizep);
>  
>  int qemu_devtree_setprop(void *fdt, const char *node_path,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]