summaryrefslogtreecommitdiffstats
path: root/rtemsbsd
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-17 14:30:44 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-23 14:54:59 +0100
commite4923c85c950f499259dd0efb0fe8b63ca1164b0 (patch)
tree8c7bf34419ef999ce339dd26aaf32947911ddf63 /rtemsbsd
parentlinux/of_address.h: Add of_translate_address() (diff)
downloadrtems-libbsd-e4923c85c950f499259dd0efb0fe8b63ca1164b0.tar.bz2
linux/of_address.h: of_address_to_resource()
Translate address in of_address_to_resource(). Update #3277.
Diffstat (limited to 'rtemsbsd')
-rw-r--r--rtemsbsd/powerpc/include/linux/device.h2
-rw-r--r--rtemsbsd/sys/powerpc/compat.c22
2 files changed, 8 insertions, 16 deletions
diff --git a/rtemsbsd/powerpc/include/linux/device.h b/rtemsbsd/powerpc/include/linux/device.h
index 4a6bc301..f4c344a1 100644
--- a/rtemsbsd/powerpc/include/linux/device.h
+++ b/rtemsbsd/powerpc/include/linux/device.h
@@ -79,7 +79,7 @@ static inline void __iomem *
devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size)
{
- return (void __iomem *)(dev->base + (uintptr_t)offset);
+ return (void __iomem *)(uintptr_t)offset;
}
#define devm_alloc_percpu(dev, type) \
diff --git a/rtemsbsd/sys/powerpc/compat.c b/rtemsbsd/sys/powerpc/compat.c
index 8113eb20..45f06e5d 100644
--- a/rtemsbsd/sys/powerpc/compat.c
+++ b/rtemsbsd/sys/powerpc/compat.c
@@ -329,6 +329,7 @@ of_address_to_resource(struct device_node *dn, int index,
struct resource *res)
{
const void *fdt = bsp_fdt_get();
+ int node;
int ac;
int sc;
int len;
@@ -336,16 +337,17 @@ of_address_to_resource(struct device_node *dn, int index,
int i;
memset(res, 0, sizeof(*res));
+ node = dn->offset;
- ac = get_address_cells(fdt, dn->offset);
+ ac = get_address_cells(fdt, node);
if (ac < 0)
return (-EINVAL);
- sc = get_size_cells(fdt, dn->offset);
+ sc = get_size_cells(fdt, node);
if (sc < 0)
return (-EINVAL);
- p = fdt_getprop(fdt, dn->offset, "reg", &len);
+ p = fdt_getprop(fdt, node, "reg", &len);
if (p == NULL)
return (-EINVAL);
@@ -354,19 +356,9 @@ of_address_to_resource(struct device_node *dn, int index,
if (i + ac + sc > len)
return (-EINVAL);
- while (ac > 0) {
- res->start = (res->start << 32) | fdt32_to_cpu(p[i]);
- ++i;
- --ac;
- }
-
- while (sc > 0) {
- res->end = (res->end << 32) | fdt32_to_cpu(p[i]);
- ++i;
- --sc;
- }
+ res->start = translate_address(fdt, node, ac, sc, &p[i]);
+ res->end = of_read_number(&p[i + ac], sc);
res->end += res->start;
-
return (0);
}