From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52939) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sc3ca-0003Gs-C4 for qemu-devel@nongnu.org; Tue, 05 Jun 2012 19:58:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sc3Z3-0002PX-Th for qemu-devel@nongnu.org; Tue, 05 Jun 2012 19:57:07 -0400 From: Alexander Graf Date: Wed, 6 Jun 2012 01:52:53 +0200 Message-Id: <1338940402-28502-3-git-send-email-agraf@suse.de> In-Reply-To: <1338940402-28502-1-git-send-email-agraf@suse.de> References: <1338940402-28502-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PATCH 02/31] dt: add helpers for 2, 3 and 4 cell adds List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "qemu-devel@nongnu.org Developers" Cc: qemu-ppc Mailing List We have device tree helpers that allow us to create single cell (u32) wide properties. However, when creating properties that contain an array of cells, we need to jump through hoops, manually passing in an array with converted endianness. To ease the pain of this a bit, create helpers for the most common array sizes, namely 2, 3 and 4 cells wide properties. Signed-off-by: Alexander Graf --- device_tree.c | 30 ++++++++++++++++++++++++++++++ device_tree.h | 9 +++++++++ 2 files changed, 39 insertions(+), 0 deletions(-) diff --git a/device_tree.c b/device_tree.c index 94a239e..b1dff4f 100644 --- a/device_tree.c +++ b/device_tree.c @@ -117,6 +117,36 @@ int qemu_devtree_setprop_cell(void *fdt, const char *node_path, return r; } +int qemu_devtree_setprop_cell2(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2) +{ + uint32_t tmp[] = { cpu_to_be32(val), + cpu_to_be32(val2) }; + return qemu_devtree_setprop(fdt, node_path, property, tmp, sizeof(tmp)); +} + +int qemu_devtree_setprop_cell3(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2, uint32_t val3) +{ + uint32_t tmp[] = { cpu_to_be32(val), + cpu_to_be32(val2), + cpu_to_be32(val3) }; + return qemu_devtree_setprop(fdt, node_path, property, tmp, sizeof(tmp)); +} + +int qemu_devtree_setprop_cell4(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2, uint32_t val3, uint32_t val4) +{ + uint32_t tmp[] = { cpu_to_be32(val), + cpu_to_be32(val2), + cpu_to_be32(val3), + cpu_to_be32(val4) }; + return qemu_devtree_setprop(fdt, node_path, property, tmp, sizeof(tmp)); +} + int qemu_devtree_setprop_string(void *fdt, const char *node_path, const char *property, const char *string) { diff --git a/device_tree.h b/device_tree.h index 4378685..9db7f86 100644 --- a/device_tree.h +++ b/device_tree.h @@ -20,6 +20,15 @@ int qemu_devtree_setprop(void *fdt, const char *node_path, const char *property, void *val_array, int size); int qemu_devtree_setprop_cell(void *fdt, const char *node_path, const char *property, uint32_t val); +int qemu_devtree_setprop_cell2(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2); +int qemu_devtree_setprop_cell3(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2, uint32_t val3); +int qemu_devtree_setprop_cell4(void *fdt, const char *node_path, + const char *property, uint32_t val, + uint32_t val2, uint32_t val3, uint32_t val4); 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); -- 1.6.0.2