From patchwork Sat Jul 23 10:50:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 106432 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DF0E2B6F68 for ; Sat, 23 Jul 2011 20:51:29 +1000 (EST) Received: from localhost ([::1]:57510 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QkZnX-0000bG-31 for incoming@patchwork.ozlabs.org; Sat, 23 Jul 2011 06:51:07 -0400 Received: from eggs.gnu.org ([140.186.70.92]:44369) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QkZmq-0007xb-92 for qemu-devel@nongnu.org; Sat, 23 Jul 2011 06:50:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QkZmj-0005vI-6z for qemu-devel@nongnu.org; Sat, 23 Jul 2011 06:50:23 -0400 Received: from cantor2.suse.de ([195.135.220.15]:54492 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QkZmi-0005u3-Vs for qemu-devel@nongnu.org; Sat, 23 Jul 2011 06:50:17 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 993AF8F3B5; Sat, 23 Jul 2011 12:50:14 +0200 (CEST) From: Alexander Graf To: QEMU-devel Developers Date: Sat, 23 Jul 2011 12:50:07 +0200 Message-Id: <1311418212-13356-24-git-send-email-agraf@suse.de> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1311418212-13356-1-git-send-email-agraf@suse.de> References: <1311418212-13356-1-git-send-email-agraf@suse.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-Received-From: 195.135.220.15 Cc: Scott Wood , Elie Richa Subject: [Qemu-devel] [PATCH 23/28] device tree: add add_subnode command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org We want to be able to create subnodes in our device tree, so export it through the qemu device tree abstraction framework. Signed-off-by: Alexander Graf --- device_tree.c | 24 ++++++++++++++++++++++++ device_tree.h | 1 + 2 files changed, 25 insertions(+), 0 deletions(-) diff --git a/device_tree.c b/device_tree.c index ec79dba..e58d522 100644 --- a/device_tree.c +++ b/device_tree.c @@ -118,3 +118,27 @@ int qemu_devtree_nop_node(void *fdt, const char *node_path) return fdt_nop_node(fdt, offset); } + +int qemu_devtree_add_subnode(void *fdt, const char *name) +{ + int offset; + char *dupname = qemu_strdup(name); + char *basename = strrchr(dupname, '/'); + int retval; + + if (!basename) { + return -1; + } + + basename[0] = '\0'; + basename++; + + offset = fdt_path_offset(fdt, dupname); + if (offset < 0) { + return offset; + } + + retval = fdt_add_subnode(fdt, offset, basename); + qemu_free(dupname); + return retval; +} diff --git a/device_tree.h b/device_tree.h index 76fce5f..4378685 100644 --- a/device_tree.h +++ b/device_tree.h @@ -23,5 +23,6 @@ int qemu_devtree_setprop_cell(void *fdt, const char *node_path, int qemu_devtree_setprop_string(void *fdt, const char *node_path, const char *property, const char *string); int qemu_devtree_nop_node(void *fdt, const char *node_path); +int qemu_devtree_add_subnode(void *fdt, const char *name); #endif /* __DEVICE_TREE_H__ */