summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libpdbg/cfam.c4
-rw-r--r--libpdbg/device.c11
-rw-r--r--libpdbg/device.h7
-rw-r--r--libpdbg/i2c.c2
-rw-r--r--libpdbg/libpdbg.h4
-rw-r--r--libpdbg/p8chip.c4
-rw-r--r--libpdbg/p9chip.c2
-rw-r--r--libpdbg/target.c2
8 files changed, 15 insertions, 21 deletions
diff --git a/libpdbg/cfam.c b/libpdbg/cfam.c
index 1f0c938..67ab22e 100644
--- a/libpdbg/cfam.c
+++ b/libpdbg/cfam.c
@@ -295,7 +295,7 @@ static int cfam_hmfsi_read(struct fsi *fsi, uint32_t addr, uint32_t *data)
{
struct pdbg_target *parent_fsi = pdbg_target_require_parent("fsi", &fsi->target);
- addr += dt_get_address(&fsi->target, 0, NULL);
+ addr += pdbg_target_address(&fsi->target, NULL);
return fsi_read(parent_fsi, addr, data);
}
@@ -304,7 +304,7 @@ static int cfam_hmfsi_write(struct fsi *fsi, uint32_t addr, uint32_t data)
{
struct pdbg_target *parent_fsi = pdbg_target_require_parent("fsi", &fsi->target);
- addr += dt_get_address(&fsi->target, 0, NULL);
+ addr += pdbg_target_address(&fsi->target, NULL);
return fsi_write(parent_fsi, addr, data);
}
diff --git a/libpdbg/device.c b/libpdbg/device.c
index a7212a6..5cd8302 100644
--- a/libpdbg/device.c
+++ b/libpdbg/device.c
@@ -658,17 +658,16 @@ static u32 dt_n_size_cells(const struct pdbg_target *node)
return dt_prop_get_u32_def(node->parent, "#size-cells", 1);
}
-u64 dt_get_address(const struct pdbg_target *node, unsigned int index,
- u64 *out_size)
+uint64_t pdbg_target_address(struct pdbg_target *target, uint64_t *out_size)
{
const struct dt_property *p;
- u32 na = dt_n_address_cells(node);
- u32 ns = dt_n_size_cells(node);
+ u32 na = dt_n_address_cells(target);
+ u32 ns = dt_n_size_cells(target);
u32 pos, n;
- p = dt_require_property(node, "reg", -1);
+ p = dt_require_property(target, "reg", -1);
n = (na + ns) * sizeof(u32);
- pos = n * index;
+ pos = n;
assert((pos + n) <= p->len);
if (out_size)
*out_size = dt_get_number(p->prop + pos + na * sizeof(u32), ns);
diff --git a/libpdbg/device.h b/libpdbg/device.h
index a050a23..29224a2 100644
--- a/libpdbg/device.h
+++ b/libpdbg/device.h
@@ -44,11 +44,4 @@ 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);
-/* Address accessors ("reg" properties parsing). No translation,
- * only support "simple" address forms (1 or 2 cells). Asserts
- * if address doesn't exist
- */
-u64 dt_get_address(const struct pdbg_target *node, unsigned int index,
- u64 *out_size);
-
#endif /* __DEVICE_H */
diff --git a/libpdbg/i2c.c b/libpdbg/i2c.c
index b1580e1..9cb6271 100644
--- a/libpdbg/i2c.c
+++ b/libpdbg/i2c.c
@@ -131,7 +131,7 @@ int i2c_target_probe(struct pdbg_target *target)
int addr;
bus = dt_prop_get_def(&pib->target, "bus", "/dev/i2c4");
- addr = dt_get_address(&pib->target, 0, NULL);
+ addr = pdbg_target_address(&pib->target, NULL);
assert(addr);
i2c_data = malloc(sizeof(*i2c_data));
diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
index 47c8808..cd356fc 100644
--- a/libpdbg/libpdbg.h
+++ b/libpdbg/libpdbg.h
@@ -73,7 +73,7 @@ void pdbg_target_set_property(struct pdbg_target *target, const char *name, cons
/* Get the given property and return the size */
void *pdbg_target_property(struct pdbg_target *target, const char *name, size_t *size);
int pdbg_target_u32_property(struct pdbg_target *target, const char *name, uint32_t *val);
-uint64_t pdbg_get_address(struct pdbg_target *target, uint64_t *size);
+uint64_t pdbg_target_address(struct pdbg_target *target, uint64_t *size);
/* Old deprecated for names for the above. Do not use for new projects
* as these will be removed at some future point. */
@@ -81,6 +81,8 @@ uint64_t pdbg_get_address(struct pdbg_target *target, uint64_t *size);
pdbg_target_set_property(target, name, val, size)
#define pdbg_get_target_property(target, name, size) \
pdbg_target_property(target, name, size)
+#define pdbg_get_address(target, index, size) \
+ (index == 0 ? pdbg_target_address(target, size) : assert(0))
/* Find an chip-id property in this node; if not found, walk up the parent
* nodes. Returns -1 if no chip-id property exists. */
diff --git a/libpdbg/p8chip.c b/libpdbg/p8chip.c
index f6df925..f3e71a0 100644
--- a/libpdbg/p8chip.c
+++ b/libpdbg/p8chip.c
@@ -155,7 +155,7 @@ static int assert_special_wakeup(struct core *chip)
if (i++ > SPECIAL_WKUP_TIMEOUT) {
PR_ERROR("Timeout waiting for special wakeup on %s@0x%08" PRIx64 "\n", chip->target.name,
- dt_get_address(&chip->target, 0, NULL));
+ pdbg_target_address(&chip->target, NULL));
return -1;
}
} while (!(gp0 & SPECIAL_WKUP_DONE));
@@ -479,7 +479,7 @@ static int p8_thread_probe(struct pdbg_target *target)
{
struct thread *thread = target_to_thread(target);
- thread->id = (dt_get_address(target, 0, NULL) >> 4) & 0xf;
+ thread->id = (pdbg_target_address(target, NULL) >> 4) & 0xf;
thread->status = get_thread_status(thread);
return 0;
diff --git a/libpdbg/p9chip.c b/libpdbg/p9chip.c
index 6a2f434..2411103 100644
--- a/libpdbg/p9chip.c
+++ b/libpdbg/p9chip.c
@@ -527,7 +527,7 @@ static int p9_core_probe(struct pdbg_target *target)
if (i++ > SPECIAL_WKUP_TIMEOUT) {
PR_ERROR("Timeout waiting for special wakeup on %s@0x%08" PRIx64 "\n", target->name,
- dt_get_address(target, 0, NULL));
+ pdbg_target_address(target, NULL));
break;
}
} while (!(value & SPECIAL_WKUP_DONE));
diff --git a/libpdbg/target.c b/libpdbg/target.c
index d8d699f..5599d78 100644
--- a/libpdbg/target.c
+++ b/libpdbg/target.c
@@ -24,7 +24,7 @@ static struct pdbg_target *get_class_target_addr(struct pdbg_target *target, con
if (target->translate)
*addr = target->translate(target, *addr);
else
- *addr += dt_get_address(target, 0, NULL);
+ *addr += pdbg_target_address(target, NULL);
/* Keep walking the tree translating addresses */
target = target->parent;
OpenPOWER on IntegriCloud