From 8c293d6ac9c9f698a2b5db8def9d1cef725b5011 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:28 -0600 Subject: dm: core: Add ofnode_read_string_count() This provides a way to find the number of strings in a string list. Add it and also fix up the comment for ofnode_read_string_index(). Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- include/dm/of_access.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'include/dm/of_access.h') diff --git a/include/dm/of_access.h b/include/dm/of_access.h index 142f0f43c9..d2827001e2 100644 --- a/include/dm/of_access.h +++ b/include/dm/of_access.h @@ -260,6 +260,24 @@ static inline int of_property_read_string_index(const struct device_node *np, return rc < 0 ? rc : 0; } +/** + * of_property_count_strings() - Find and return the number of strings from a + * multiple strings property. + * @np: device node from which the property value is to be read. + * @propname: name of the property to be searched. + * + * Search for a property in a device tree node and retrieve the number of null + * terminated string contain in it. Returns the number of strings on + * success, -EINVAL if the property does not exist, -ENODATA if property + * does not have a value, and -EILSEQ if the string is not null-terminated + * within the length of the property data. + */ +static inline int of_property_count_strings(const struct device_node *np, + const char *propname) +{ + return of_property_read_string_helper(np, propname, NULL, 0, 0); +} + /** * of_parse_phandle - Resolve a phandle property to a device_node pointer * @np: Pointer to device node holding phandle property -- cgit From 878d68c0c357ff62120d5783d950f34ecd1065d9 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:31 -0600 Subject: dm: core: Add functions to obtain node's address/size cells The of_n_addr_cells() and of_n_size_cells() functions are useful for getting the size of addresses in a node, but in a few places U-Boot needs to obtain the actual property value for a node without walking up the stack. Add functions for this and just the existing code to use it. Add a comment to the existing ofnode functions which do not do the right thing with a flat tree. This fixes a problem reading PCI addresses. Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- include/dm/of_access.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'include/dm/of_access.h') diff --git a/include/dm/of_access.h b/include/dm/of_access.h index d2827001e2..c5ea391aec 100644 --- a/include/dm/of_access.h +++ b/include/dm/of_access.h @@ -60,6 +60,26 @@ int of_n_addr_cells(const struct device_node *np); */ int of_n_size_cells(const struct device_node *np); +/** + * of_simple_addr_cells() - Get the address cells property in a node + * + * This function matches fdt_address_cells(). + * + * @np: Node pointer to check + * @return value of #address-cells property in this node, or 2 if none + */ +int of_simple_addr_cells(const struct device_node *np); + +/** + * of_simple_size_cells() - Get the size cells property in a node + * + * This function matches fdt_size_cells(). + * + * @np: Node pointer to check + * @return value of #size-cells property in this node, or 2 if none + */ +int of_simple_size_cells(const struct device_node *np); + /** * of_find_property() - find a property in a node * -- cgit