From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55703) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sc8t2-0006b0-Vi for qemu-devel@nongnu.org; Wed, 06 Jun 2012 01:34:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sc8t1-0004rv-7a for qemu-devel@nongnu.org; Wed, 06 Jun 2012 01:34:28 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:55171) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sc8t1-0004rf-0w for qemu-devel@nongnu.org; Wed, 06 Jun 2012 01:34:27 -0400 Received: by pbbro12 with SMTP id ro12so9170936pbb.4 for ; Tue, 05 Jun 2012 22:34:24 -0700 (PDT) From: Peter Crosthwaite In-Reply-To: <1338940402-28502-7-git-send-email-agraf@suse.de> References: <1338940402-28502-1-git-send-email-agraf@suse.de> <1338940402-28502-7-git-send-email-agraf@suse.de> Content-Type: text/plain; charset="UTF-8" Date: Wed, 06 Jun 2012 15:34:23 +1000 Message-ID: <1338960863.15420.30.camel@PetaLogix-ws2> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 06/31] dt: add helper for empty dt creation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: qemu-ppc Mailing List , "qemu-devel@nongnu.org Developers" 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 Reviewed-by: Peter Crosthwaite > --- > 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 > > +#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,