mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-17 12:41:32 +00:00
fdt: Add a function to get the index of a string
Given a device tree node and a property name, the new fdt_find_string() function will look up a given string in the string list contained in the property's value and return its index. Signed-off-by: Thierry Reding <treding@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
bc4147ab2d
commit
fc503c1791
2 changed files with 37 additions and 0 deletions
|
@ -866,6 +866,17 @@ int fdt_stringlist_contains(const char *strlist, int listlen, const char *str);
|
|||
*/
|
||||
int fdt_count_strings(const void *fdt, int node, const char *property);
|
||||
|
||||
/**
|
||||
* fdt_find_string - find a string in a string list and return its index
|
||||
* @fdt: pointer to the device tree blob
|
||||
* @node: offset of the node
|
||||
* @property: name of the property containing the string list
|
||||
* @string: string to look up in the string list
|
||||
* @return: the index of the string or negative on error
|
||||
*/
|
||||
int fdt_find_string(const void *fdt, int node, const char *property,
|
||||
const char *string);
|
||||
|
||||
/**********************************************************************/
|
||||
/* Read-only functions (addressing related) */
|
||||
/**********************************************************************/
|
||||
|
|
|
@ -511,6 +511,32 @@ int fdt_count_strings(const void *fdt, int node, const char *property)
|
|||
return count;
|
||||
}
|
||||
|
||||
int fdt_find_string(const void *fdt, int node, const char *property,
|
||||
const char *string)
|
||||
{
|
||||
const char *list, *end;
|
||||
int len, index = 0;
|
||||
|
||||
list = fdt_getprop(fdt, node, property, &len);
|
||||
if (!list)
|
||||
return len;
|
||||
|
||||
end = list + len;
|
||||
len = strlen(string);
|
||||
|
||||
while (list < end) {
|
||||
int l = strlen(list);
|
||||
|
||||
if (l == len && memcmp(list, string, len) == 0)
|
||||
return index;
|
||||
|
||||
list += l + 1;
|
||||
index++;
|
||||
}
|
||||
|
||||
return -FDT_ERR_NOTFOUND;
|
||||
}
|
||||
|
||||
int fdt_node_check_compatible(const void *fdt, int nodeoffset,
|
||||
const char *compatible)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue