From dcf988525f6e2045b9122ba7c3bf6a9bf44f146e Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 25 Jul 2017 08:29:55 -0600 Subject: dm: core: Add ofnode_read_resource() We sometimes need to read a resource from an arbitrary node. In any case for consistency we should not put the live-tree switching code in a dev_read_...() function. Update this to suit. Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 Tested-by: Stephen Warren --- drivers/core/ofnode.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'drivers/core/ofnode.c') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index fd068b06ef..e4b2a85f19 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -14,6 +14,7 @@ #include #include #include +#include int ofnode_read_u32(ofnode node, const char *propname, u32 *outp) { @@ -593,3 +594,23 @@ bool ofnode_pre_reloc(ofnode node) return false; } + +int ofnode_read_resource(ofnode node, uint index, struct resource *res) +{ + if (ofnode_is_np(node)) { + return of_address_to_resource(ofnode_to_np(node), index, res); + } else { + struct fdt_resource fres; + int ret; + + ret = fdt_get_resource(gd->fdt_blob, ofnode_to_offset(node), + "reg", index, &fres); + if (ret < 0) + return -EINVAL; + memset(res, '\0', sizeof(*res)); + res->start = fres.start; + res->end = fres.end; + + return 0; + } +} -- cgit v1.2.3