From e679d03b08fbde6145fdef150f4b240e6d14448e Mon Sep 17 00:00:00 2001 From: Keerthy Date: Wed, 24 Apr 2019 17:19:53 +0530 Subject: core: ofnode: Add ofnode_get_addr_size_index Add ofnode_get_addr_size_index function to fetch the address and size of the reg space based on index. Signed-off-by: Keerthy Reviewed-by: Simon Glass --- include/dm/ofnode.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/dm/ofnode.h') diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index d206ee2caab..1be5ba4b45e 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -354,6 +354,20 @@ ofnode ofnode_get_by_phandle(uint phandle); */ int ofnode_read_size(ofnode node, const char *propname); +/** + * ofnode_get_addr_size_index() - get an address/size from a node + * based on index + * + * This reads the register address/size from a node based on index + * + * @node: node to read from + * @index: Index of address to read (0 for first) + * @size: Pointer to size of the address + * @return address, or FDT_ADDR_T_NONE if not present or invalid + */ +phys_addr_t ofnode_get_addr_size_index(ofnode node, int index, + fdt_size_t *size); + /** * ofnode_get_addr_index() - get an address from a node * -- cgit v1.3.1 From b061ef39c350c288542536b09dc01d9e984a12ac Mon Sep 17 00:00:00 2001 From: Trent Piepho Date: Fri, 10 May 2019 17:48:20 +0000 Subject: core: ofnode: Have ofnode_read_u32_default return a u32 It was returning an int, which doesn't work if the u32 it is reading, or the default value, will overflow a signed int. While it could be made to work, when using a C standard/compiler where casting negative signed values to unsigned has a defined behavior, combined with careful casting, it seems obvious one is meant to use ofnode_read_s32_default() with signed values. Cc: Simon Glass Signed-off-by: Trent Piepho --- drivers/core/ofnode.c | 2 +- include/dm/ofnode.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include/dm/ofnode.h') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 12977a77907..c72c6e26737 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -39,7 +39,7 @@ int ofnode_read_u32(ofnode node, const char *propname, u32 *outp) return 0; } -int ofnode_read_u32_default(ofnode node, const char *propname, u32 def) +u32 ofnode_read_u32_default(ofnode node, const char *propname, u32 def) { assert(ofnode_valid(node)); ofnode_read_u32(node, propname, &def); diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index 1be5ba4b45e..4ab2ae1ba5c 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -224,7 +224,7 @@ static inline int ofnode_read_s32(ofnode node, const char *propname, * @def: default value to return if the property has no value * @return property value, or @def if not found */ -int ofnode_read_u32_default(ofnode ref, const char *propname, u32 def); +u32 ofnode_read_u32_default(ofnode ref, const char *propname, u32 def); /** * ofnode_read_s32_default() - Read a 32-bit integer from a property -- cgit v1.3.1