+/**\r
+ * fdt_stringlist_count - count the number of strings in a string list\r
+ * @fdt: pointer to the device tree blob\r
+ * @nodeoffset: offset of a tree node\r
+ * @property: name of the property containing the string list\r
+ * @return:\r
+ * the number of strings in the given property\r
+ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated\r
+ * -FDT_ERR_NOTFOUND if the property does not exist\r
+ */\r
+int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property);\r
+\r
+/**\r
+ * fdt_stringlist_search - find a string in a string list and return its index\r
+ * @fdt: pointer to the device tree blob\r
+ * @nodeoffset: offset of a tree node\r
+ * @property: name of the property containing the string list\r
+ * @string: string to look up in the string list\r
+ *\r
+ * Note that it is possible for this function to succeed on property values\r
+ * that are not NUL-terminated. That's because the function will stop after\r
+ * finding the first occurrence of @string. This can for example happen with\r
+ * small-valued cell properties, such as #address-cells, when searching for\r
+ * the empty string.\r
+ *\r
+ * @return:\r
+ * the index of the string in the list of strings\r
+ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated\r
+ * -FDT_ERR_NOTFOUND if the property does not exist or does not contain\r
+ * the given string\r
+ */\r
+int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property,\r
+ const char *string);\r
+\r
+/**\r
+ * fdt_stringlist_get() - obtain the string at a given index in a string list\r
+ * @fdt: pointer to the device tree blob\r
+ * @nodeoffset: offset of a tree node\r
+ * @property: name of the property containing the string list\r
+ * @index: index of the string to return\r
+ * @lenp: return location for the string length or an error code on failure\r
+ *\r
+ * Note that this will successfully extract strings from properties with\r
+ * non-NUL-terminated values. For example on small-valued cell properties\r
+ * this function will return the empty string.\r
+ *\r
+ * If non-NULL, the length of the string (on success) or a negative error-code\r
+ * (on failure) will be stored in the integer pointer to by lenp.\r
+ *\r
+ * @return:\r
+ * A pointer to the string at the given index in the string list or NULL on\r
+ * failure. On success the length of the string will be stored in the memory\r
+ * location pointed to by the lenp parameter, if non-NULL. On failure one of\r
+ * the following negative error codes will be returned in the lenp parameter\r
+ * (if non-NULL):\r
+ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated\r
+ * -FDT_ERR_NOTFOUND if the property does not exist\r
+ */\r
+const char *fdt_stringlist_get(const void *fdt, int nodeoffset,\r
+ const char *property, int index,\r
+ int *lenp);\r
+\r
+/**********************************************************************/\r
+/* Read-only functions (addressing related) */\r
+/**********************************************************************/\r
+\r
+/**\r
+ * FDT_MAX_NCELLS - maximum value for #address-cells and #size-cells\r
+ *\r
+ * This is the maximum value for #address-cells, #size-cells and\r
+ * similar properties that will be processed by libfdt. IEE1275\r
+ * requires that OF implementations handle values up to 4.\r
+ * Implementations may support larger values, but in practice higher\r
+ * values aren't used.\r
+ */\r
+#define FDT_MAX_NCELLS 4\r
+\r
+/**\r
+ * fdt_address_cells - retrieve address size for a bus represented in the tree\r
+ * @fdt: pointer to the device tree blob\r
+ * @nodeoffset: offset of the node to find the address size for\r
+ *\r
+ * When the node has a valid #address-cells property, returns its value.\r
+ *\r
+ * returns:\r
+ * 0 <= n < FDT_MAX_NCELLS, on success\r
+ * 2, if the node has no #address-cells property\r
+ * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid\r
+ * #address-cells property\r
+ * -FDT_ERR_BADMAGIC,\r
+ * -FDT_ERR_BADVERSION,\r
+ * -FDT_ERR_BADSTATE,\r
+ * -FDT_ERR_BADSTRUCTURE,\r
+ * -FDT_ERR_TRUNCATED, standard meanings\r
+ */\r
+int fdt_address_cells(const void *fdt, int nodeoffset);\r
+\r
+/**\r
+ * fdt_size_cells - retrieve address range size for a bus represented in the\r
+ * tree\r
+ * @fdt: pointer to the device tree blob\r
+ * @nodeoffset: offset of the node to find the address range size for\r
+ *\r
+ * When the node has a valid #size-cells property, returns its value.\r
+ *\r
+ * returns:\r
+ * 0 <= n < FDT_MAX_NCELLS, on success\r
+ * 2, if the node has no #address-cells property\r
+ * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid\r
+ * #size-cells property\r
+ * -FDT_ERR_BADMAGIC,\r
+ * -FDT_ERR_BADVERSION,\r
+ * -FDT_ERR_BADSTATE,\r
+ * -FDT_ERR_BADSTRUCTURE,\r
+ * -FDT_ERR_TRUNCATED, standard meanings\r
+ */\r
+int fdt_size_cells(const void *fdt, int nodeoffset);\r
+\r
+\r