From patchwork Thu Oct 25 06:21:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Popple X-Patchwork-Id: 988910 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42gcTk0h6Wz9sBk for ; Thu, 25 Oct 2018 17:21:46 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=popple.id.au Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 42gcTj59SBzDrYZ for ; Thu, 25 Oct 2018 17:21:45 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=popple.id.au X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [203.11.71.1]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 42gcTW5G6TzDrS4 for ; Thu, 25 Oct 2018 17:21:35 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=popple.id.au Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 42gcTW2jvFz9sBh; Thu, 25 Oct 2018 17:21:35 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=popple.id.au From: Alistair Popple To: pdbg@lists.ozlabs.org Date: Thu, 25 Oct 2018 17:21:22 +1100 Message-Id: <20181025062131.18873-2-alistair@popple.id.au> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20181025062131.18873-1-alistair@popple.id.au> References: <20181025062131.18873-1-alistair@popple.id.au> Subject: [Pdbg] [PATCH 01/10] libpdbg: Remove unused code X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: amitay@ozlabs.org MIME-Version: 1.0 Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Much of the code in device.c was originally copied over from Skiboot and is not applicable or used by pdbg. Signed-off-by: Alistair Popple --- libpdbg/device.c | 266 +----------------------------------------------------- libpdbg/device.h | 89 ------------------ libpdbg/libpdbg.c | 27 ------ libpdbg/libpdbg.h | 1 - 4 files changed, 4 insertions(+), 379 deletions(-) diff --git a/libpdbg/device.c b/libpdbg/device.c index 7442e29..cdb3481 100644 --- a/libpdbg/device.c +++ b/libpdbg/device.c @@ -34,7 +34,6 @@ u32 last_phandle = 0; struct pdbg_target *dt_root; -struct pdbg_target *dt_chosen; static const char *take_name(const char *name) { @@ -283,22 +282,6 @@ struct pdbg_target *dt_find_by_path(struct pdbg_target *root, const char *path) return root; } -struct pdbg_target *dt_find_by_name(struct pdbg_target *root, const char *name) -{ - struct pdbg_target *child, *match; - - list_for_each(&root->children, child, list) { - if (!strcmp(child->dn_name, name)) - return child; - - match = dt_find_by_name(child, name); - if (match) - return match; - } - - return NULL; -} - static struct dt_property *new_property(struct pdbg_target *node, const char *name, size_t size) { @@ -363,107 +346,6 @@ void dt_resize_property(struct dt_property **prop, size_t len) (*prop)->list.prev->next = &(*prop)->list; } -struct dt_property *dt_add_property_string(struct pdbg_target *node, - const char *name, - const char *value) -{ - return dt_add_property(node, name, value, strlen(value)+1); -} - -struct dt_property *dt_add_property_nstr(struct pdbg_target *node, - const char *name, - const char *value, unsigned int vlen) -{ - struct dt_property *p; - char *tmp = zalloc(vlen + 1); - - if (!tmp) - return NULL; - - strncpy(tmp, value, vlen); - p = dt_add_property(node, name, tmp, strlen(tmp)+1); - free(tmp); - - return p; -} - -struct dt_property *__dt_add_property_cells(struct pdbg_target *node, - const char *name, - int count, ...) -{ - struct dt_property *p; - u32 *val; - unsigned int i; - va_list args; - - p = new_property(node, name, count * sizeof(u32)); - val = (u32 *)p->prop; - va_start(args, count); - for (i = 0; i < count; i++) - val[i] = cpu_to_fdt32(va_arg(args, u32)); - va_end(args); - return p; -} - -struct dt_property *__dt_add_property_u64s(struct pdbg_target *node, - const char *name, - int count, ...) -{ - struct dt_property *p; - u64 *val; - unsigned int i; - va_list args; - - p = new_property(node, name, count * sizeof(u64)); - val = (u64 *)p->prop; - va_start(args, count); - for (i = 0; i < count; i++) - val[i] = cpu_to_fdt64(va_arg(args, u64)); - va_end(args); - return p; -} - -struct dt_property *__dt_add_property_strings(struct pdbg_target *node, - const char *name, - int count, ...) -{ - struct dt_property *p; - unsigned int i, size; - va_list args; - const char *sstr; - char *s; - - va_start(args, count); - for (i = size = 0; i < count; i++) { - sstr = va_arg(args, const char *); - if (sstr) - size += strlen(sstr) + 1; - } - va_end(args); - if (!size) - size = 1; - p = new_property(node, name, size); - s = (char *)p->prop; - *s = 0; - va_start(args, count); - for (i = 0; i < count; i++) { - sstr = va_arg(args, const char *); - if (sstr) { - strcpy(s, sstr); - s = s + strlen(sstr) + 1; - } - } - va_end(args); - return p; -} - -void dt_del_property(struct pdbg_target *node, struct dt_property *prop) -{ - list_del_from(&node->properties, &prop->list); - free_name(prop->name); - free(prop); -} - u32 dt_property_get_cell(const struct dt_property *prop, u32 index) { assert(prop->len >= (index+1)*sizeof(u32)); @@ -497,16 +379,6 @@ struct pdbg_target *dt_next(const struct pdbg_target *root, return NULL; } -struct dt_property *__dt_find_property(struct pdbg_target *node, const char *name) -{ - struct dt_property *i; - - list_for_each(&node->properties, i, list) - if (strcmp(i->name, name) == 0) - return i; - return NULL; -} - struct dt_property *dt_find_property(const struct pdbg_target *node, const char *name) { @@ -518,14 +390,6 @@ struct dt_property *dt_find_property(const struct pdbg_target *node, return NULL; } -void dt_check_del_prop(struct pdbg_target *node, const char *name) -{ - struct dt_property *p; - - p = __dt_find_property(node, name); - if (p) - dt_del_property(node, p); -} const struct dt_property *dt_require_property(const struct pdbg_target *node, const char *name, int wanted_len) { @@ -551,19 +415,6 @@ const struct dt_property *dt_require_property(const struct pdbg_target *node, return p; } -bool dt_has_node_property(const struct pdbg_target *node, - const char *name, const char *val) -{ - const struct dt_property *p = dt_find_property(node, name); - - if (!p) - return false; - if (!val) - return true; - - return p->len == strlen(val) + 1 && memcmp(p->prop, val, p->len) == 0; -} - bool dt_prop_find_string(const struct dt_property *p, const char *s) { const char *c, *end; @@ -601,25 +452,6 @@ struct pdbg_target *dt_find_compatible_node(struct pdbg_target *root, return NULL; } -u64 dt_prop_get_u64(const struct pdbg_target *node, const char *prop) -{ - const struct dt_property *p = dt_require_property(node, prop, 8); - - return ((u64)dt_property_get_cell(p, 0) << 32) - | dt_property_get_cell(p, 1); -} - -u64 dt_prop_get_u64_def(const struct pdbg_target *node, const char *prop, u64 def) -{ - const struct dt_property *p = dt_find_property(node, prop); - - if (!p) - return def; - - return ((u64)dt_property_get_cell(p, 0) << 32) - | dt_property_get_cell(p, 1); -} - u32 dt_prop_get_u32(const struct pdbg_target *node, const char *prop) { const struct dt_property *p = dt_require_property(node, prop, 4); @@ -629,12 +461,12 @@ u32 dt_prop_get_u32(const struct pdbg_target *node, const char *prop) u32 dt_prop_get_u32_def(const struct pdbg_target *node, const char *prop, u32 def) { - const struct dt_property *p = dt_find_property(node, prop); + const struct dt_property *p = dt_find_property(node, prop); - if (!p) - return def; + if (!p) + return def; - return dt_property_get_cell(p, 0); + return dt_property_get_cell(p, 0); } u32 dt_prop_get_u32_index(const struct pdbg_target *node, const char *prop, u32 index) @@ -659,17 +491,6 @@ const void *dt_prop_get_def(const struct pdbg_target *node, const char *prop, return p ? p->prop : def; } -const void *dt_prop_get_def_size(const struct pdbg_target *node, const char *prop, - void *def, size_t *len) -{ - const struct dt_property *p = dt_find_property(node, prop); - *len = 0; - if (p) - *len = p->len; - - return p ? p->prop : def; -} - u32 dt_prop_get_cell(const struct pdbg_target *node, const char *prop, u32 cell) { const struct dt_property *p = dt_require_property(node, prop, -1); @@ -677,35 +498,6 @@ u32 dt_prop_get_cell(const struct pdbg_target *node, const char *prop, u32 cell) return dt_property_get_cell(p, cell); } -u32 dt_prop_get_cell_def(const struct pdbg_target *node, const char *prop, - u32 cell, u32 def) -{ - const struct dt_property *p = dt_find_property(node, prop); - - if (!p) - return def; - - return dt_property_get_cell(p, cell); -} - -void dt_free(struct pdbg_target *node) -{ - struct pdbg_target *child; - struct dt_property *p; - - while ((child = list_top(&node->children, struct pdbg_target, list))) - dt_free(child); - - while ((p = list_pop(&node->properties, struct dt_property, list))) { - free_name(p->name); - free(p); - } - - if (node->parent) - list_del_from(&node->parent->children, &node->list); - dt_destroy(node); -} - enum pdbg_target_status str_to_status(const char *status) { if (!strcmp(status, "enabled")) { @@ -852,53 +644,3 @@ u32 dt_get_chip_id(const struct pdbg_target *node) assert(id != 0xffffffff); return id; } - -struct pdbg_target *dt_find_compatible_node_on_chip(struct pdbg_target *root, - struct pdbg_target *prev, - const char *compat, - uint32_t chip_id) -{ - struct pdbg_target *node; - - node = prev ? dt_next(root, prev) : root; - for (; node; node = dt_next(root, node)) { - u32 cid = __dt_get_chip_id(node); - if (cid == chip_id && - dt_node_is_compatible(node, compat)) - return node; - } - return NULL; -} - -unsigned int dt_count_addresses(const struct pdbg_target *node) -{ - const struct dt_property *p; - u32 na = dt_n_address_cells(node); - u32 ns = dt_n_size_cells(node); - u32 n; - - p = dt_require_property(node, "reg", -1); - n = (na + ns) * sizeof(u32); - - if (n == 0) - return 0; - - return p->len / n; -} - -u64 dt_translate_address(const struct pdbg_target *node, unsigned int index, - u64 *out_size) -{ - /* XXX TODO */ - return dt_get_address(node, index, out_size); -} - -bool dt_node_is_enabled(struct pdbg_target *node) -{ - const struct dt_property *p = dt_find_property(node, "status"); - - if (!p) - return true; - - return p->len > 1 && p->prop[0] == 'o' && p->prop[1] == 'k'; -} diff --git a/libpdbg/device.h b/libpdbg/device.h index cb5bc10..5786d99 100644 --- a/libpdbg/device.h +++ b/libpdbg/device.h @@ -44,7 +44,6 @@ struct dt_property { extern u32 last_phandle; extern struct pdbg_target *dt_root; -extern struct pdbg_target *dt_chosen; /* Create a new node. */ struct pdbg_target *dt_new_node(const char *name, const void *fdt, int offset); @@ -56,51 +55,6 @@ bool dt_attach_root(struct pdbg_target *parent, struct pdbg_target *root); struct dt_property *dt_add_property(struct pdbg_target *node, const char *name, const void *val, size_t size); -struct dt_property *dt_add_property_string(struct pdbg_target *node, - const char *name, - const char *value); -struct dt_property *dt_add_property_nstr(struct pdbg_target *node, - const char *name, - const char *value, unsigned int vlen); - -/* Given out enough GCC extensions, we will achieve enlightenment! */ -#define dt_add_property_strings(node, name, ...) \ - __dt_add_property_strings((node), ((name)), \ - sizeof((const char *[]) { __VA_ARGS__ })/sizeof(const char *), \ - __VA_ARGS__) - -struct dt_property *__dt_add_property_strings(struct pdbg_target *node, - const char *name, - int count, ...); - -/* Given out enough GCC extensions, we will achieve enlightenment! */ -#define dt_add_property_cells(node, name, ...) \ - __dt_add_property_cells((node), ((name)), \ - sizeof((u32[]) { __VA_ARGS__ })/sizeof(u32), \ - __VA_ARGS__) - -struct dt_property *__dt_add_property_cells(struct pdbg_target *node, - const char *name, - int count, ...); - -#define dt_add_property_u64s(node, name, ...) \ - __dt_add_property_u64s((node), ((name)), \ - sizeof((u64[]) { __VA_ARGS__ })/sizeof(u64), \ - __VA_ARGS__) - -struct dt_property *__dt_add_property_u64s(struct pdbg_target *node, - const char *name, - int count, ...); - -static inline struct dt_property *dt_add_property_u64(struct pdbg_target *node, - const char *name, u64 val) -{ - return dt_add_property_cells(node, name, (u32)(val >> 32), (u32)val); -} - -void dt_del_property(struct pdbg_target *node, struct dt_property *prop); - -void dt_check_del_prop(struct pdbg_target *node, const char *name); /* Warning: moves *prop! */ void dt_resize_property(struct dt_property **prop, size_t len); @@ -113,10 +67,6 @@ struct pdbg_target *dt_first(const struct pdbg_target *root); /* Return next node, or NULL. */ struct pdbg_target *dt_next(const struct pdbg_target *root, const struct pdbg_target *prev); -/* Iterate nodes */ -#define dt_for_each_node(root, node) \ - for (node = dt_first(root); node; node = dt_next(root, node)) - #define dt_for_each_child(parent, node) \ list_for_each(&parent->children, node, list) @@ -135,18 +85,6 @@ struct pdbg_target *dt_find_compatible_node(struct pdbg_target *root, for (node = NULL; \ (node = dt_find_compatible_node(root, node, compat)) != NULL;) -struct pdbg_target *dt_find_compatible_node_on_chip(struct pdbg_target *root, - struct pdbg_target *prev, - const char *compat, - uint32_t chip_id); - -#define dt_for_each_compatible_on_chip(root, node, compat, chip_id) \ - for (node = NULL; \ - (node = dt_find_compatible_node_on_chip(root, node,\ - compat, chip_id)) != NULL;) -/* Check status property */ -bool dt_node_is_enabled(struct pdbg_target *node); - /* Build the full path for a node. Return a new block of memory, caller * shall free() it */ @@ -164,33 +102,18 @@ struct dt_property *dt_find_property(const struct pdbg_target *node,\ const struct dt_property *dt_require_property(const struct pdbg_target *node, const char *name, int wanted_len); -/* non-const variant */ -struct dt_property *__dt_find_property(struct pdbg_target *node, const char *name); - -/* Find a property by name, check if it's the same as val. */ -bool dt_has_node_property(const struct pdbg_target *node, - const char *name, const char *val); - -/* Free a node (and any children). */ -void dt_free(struct pdbg_target *node); - /* Parse an initial fdt */ void dt_expand(const void *fdt); int dt_expand_node(struct pdbg_target *node, const void *fdt, int fdt_node) __warn_unused_result; /* Simplified accessors */ -u64 dt_prop_get_u64(const struct pdbg_target *node, const char *prop); -u64 dt_prop_get_u64_def(const struct pdbg_target *node, const char *prop, u64 def); u32 dt_prop_get_u32(const struct pdbg_target *node, const char *prop); u32 dt_prop_get_u32_def(const struct pdbg_target *node, const char *prop, u32 def); u32 dt_prop_get_u32_index(const struct pdbg_target *node, const char *prop, u32 index); const void *dt_prop_get(const struct pdbg_target *node, const char *prop); const void *dt_prop_get_def(const struct pdbg_target *node, const char *prop, void *def); -const void *dt_prop_get_def_size(const struct pdbg_target *node, const char *prop, - void *def, size_t *len); u32 dt_prop_get_cell(const struct pdbg_target *node, const char *prop, u32 cell); -u32 dt_prop_get_cell_def(const struct pdbg_target *node, const char *prop, u32 cell, u32 def); /* Parsing helpers */ u32 dt_n_address_cells(const struct pdbg_target *node); @@ -208,18 +131,6 @@ u32 dt_get_chip_id(const struct pdbg_target *node); u64 dt_get_address(const struct pdbg_target *node, unsigned int index, u64 *out_size); -/* Count "reg" property entries */ -unsigned int dt_count_addresses(const struct pdbg_target *node); - -/* Address translation - * - * WARNING: Current implementation is simplified and will not - * handle complex address formats with address space indicators - * nor will it handle "ranges" translations yet... (XX TODO) - */ -u64 dt_translate_address(const struct pdbg_target *node, unsigned int index, - u64 *out_size); - /* compare function used to sort child nodes by name when added to the * tree. This is mainly here for testing. */ diff --git a/libpdbg/libpdbg.c b/libpdbg/libpdbg.c index 106cb58..8ebafcd 100644 --- a/libpdbg/libpdbg.c +++ b/libpdbg/libpdbg.c @@ -184,21 +184,6 @@ uint64_t pdbg_get_address(struct pdbg_target *target, uint64_t *size) return dt_get_address(target, 0, size); } -/* Difference from below is that it doesn't search up the tree for the given - * property. As nothing uses this yet we don't export it for use, but we may in - * future */ -static int pdbg_get_target_u64_property(struct pdbg_target *target, const char *name, uint64_t *val) -{ - struct dt_property *p; - - p = dt_find_property(target, name); - if (!p) - return -1; - - *val = dt_get_number(p->prop, 2); - return 0; -} - int pdbg_get_target_u32_property(struct pdbg_target *target, const char *name, uint32_t *val) { struct dt_property *p; @@ -211,18 +196,6 @@ int pdbg_get_target_u32_property(struct pdbg_target *target, const char *name, u return 0; } -int pdbg_get_u64_property(struct pdbg_target *target, const char *name, uint64_t *val) -{ - struct pdbg_target *dn; - - for (dn = target; dn; dn = dn->parent) { - if (!pdbg_get_target_u64_property(dn, name, val)) - return 0; - } - - return -1; -} - void pdbg_progress_tick(uint64_t cur, uint64_t end) { if (progress_tick) diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h index fded62c..a86265a 100644 --- a/libpdbg/libpdbg.h +++ b/libpdbg/libpdbg.h @@ -73,7 +73,6 @@ void pdbg_set_target_property(struct pdbg_target *target, const char *name, cons /* Get the given property and return the size */ void *pdbg_get_target_property(struct pdbg_target *target, const char *name, size_t *size); int pdbg_get_target_u32_property(struct pdbg_target *target, const char *name, uint32_t *val); -int pdbg_get_u64_property(struct pdbg_target *target, const char *name, uint64_t *val); uint64_t pdbg_get_address(struct pdbg_target *target, uint64_t *size); /* Misc. */