libfdt: Add support for using aliases in fdt_path_offset()
If the path doesn't start with '/' check to see if it matches some alias under "/aliases" and substitute the matching alias value in the path and retry the lookup. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
This commit is contained in:
parent
0219399a4e
commit
feeca3f578
@ -143,8 +143,25 @@ int fdt_path_offset(const void *fdt, const char *path)
|
|||||||
|
|
||||||
FDT_CHECK_HEADER(fdt);
|
FDT_CHECK_HEADER(fdt);
|
||||||
|
|
||||||
if (*path != '/')
|
/* see if we have an alias */
|
||||||
return -FDT_ERR_BADPATH;
|
if (*path != '/') {
|
||||||
|
const char *q;
|
||||||
|
int aliasoffset = fdt_path_offset(fdt, "/aliases");
|
||||||
|
|
||||||
|
if (aliasoffset < 0)
|
||||||
|
return -FDT_ERR_BADPATH;
|
||||||
|
|
||||||
|
q = strchr(path, '/');
|
||||||
|
if (!q)
|
||||||
|
q = end;
|
||||||
|
|
||||||
|
p = fdt_getprop_namelen(fdt, aliasoffset, path, q - p, NULL);
|
||||||
|
if (!p)
|
||||||
|
return -FDT_ERR_BADPATH;
|
||||||
|
offset = fdt_path_offset(fdt, p);
|
||||||
|
|
||||||
|
p = q;
|
||||||
|
}
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
const char *q;
|
const char *q;
|
||||||
|
Loading…
Reference in New Issue
Block a user