From e4923c85c950f499259dd0efb0fe8b63ca1164b0 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 17 Jan 2018 14:30:44 +0100 Subject: linux/of_address.h: of_address_to_resource() Translate address in of_address_to_resource(). Update #3277. --- rtemsbsd/powerpc/include/linux/device.h | 2 +- rtemsbsd/sys/powerpc/compat.c | 22 +++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) (limited to 'rtemsbsd') 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); } -- cgit v1.2.3