mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
Introduce new fdt helper to read string properties
Introduced fdtw_read_string() to read string properties. Change-Id: I854eef0390632cf2eaddd2dce60cdb98c117de43 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
b4cf974a32
commit
2747362062
2 changed files with 36 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <debug.h>
|
||||
#include <fdt_wrappers.h>
|
||||
#include <libfdt.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
* Read cells from a given property of the given node. At most 2 cells of the
|
||||
|
@ -61,6 +62,38 @@ int fdtw_read_cells(const void *dtb, int node, const char *prop,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read string from a given property of the given node. Up to 'size - 1'
|
||||
* characters are read, and a NUL terminator is added. Returns 0 on success,
|
||||
* and -1 upon error.
|
||||
*/
|
||||
int fdtw_read_string(const void *dtb, int node, const char *prop,
|
||||
char *str, size_t size)
|
||||
{
|
||||
const char *ptr;
|
||||
size_t len;
|
||||
|
||||
assert(dtb != NULL);
|
||||
assert(node >= 0);
|
||||
assert(prop != NULL);
|
||||
assert(str != NULL);
|
||||
assert(size > 0U);
|
||||
|
||||
ptr = fdt_getprop_namelen(dtb, node, prop, (int)strlen(prop), NULL);
|
||||
if (ptr == NULL) {
|
||||
WARN("Couldn't find property %s in dtb\n", prop);
|
||||
return -1;
|
||||
}
|
||||
|
||||
len = strlcpy(str, ptr, size);
|
||||
if (len >= size) {
|
||||
WARN("String of property %s in dtb has been truncated\n", prop);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Write cells in place to a given property of the given node. At most 2 cells
|
||||
* of the property are written. Returns 0 on success, and -1 upon error.
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
int fdtw_read_cells(const void *dtb, int node, const char *prop,
|
||||
unsigned int cells, void *value);
|
||||
int fdtw_read_string(const void *dtb, int node, const char *prop,
|
||||
char *str, size_t size);
|
||||
int fdtw_write_inplace_cells(void *dtb, int node, const char *prop,
|
||||
unsigned int cells, void *value);
|
||||
|
||||
#endif /* __FDT_WRAPPERS__ */
|
||||
|
|
Loading…
Add table
Reference in a new issue