dm: core: add ofnode_get_path()

Add function for retrieving full node path of a given ofnode.
This uses np->full_name if OF is live, otherwise a call to
fdt_get_path() is made.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Tested-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
Marek Behún
2021-05-26 14:08:18 +02:00
committed by Jagan Teki
parent 31a7b719d0
commit 0e116bea52
3 changed files with 56 additions and 0 deletions

View File

@@ -286,6 +286,31 @@ const char *ofnode_get_name(ofnode node)
return fdt_get_name(gd->fdt_blob, ofnode_to_offset(node), NULL);
}
int ofnode_get_path(ofnode node, char *buf, int buflen)
{
assert(ofnode_valid(node));
if (ofnode_is_np(node)) {
if (strlen(node.np->full_name) >= buflen)
return -ENOSPC;
strcpy(buf, node.np->full_name);
return 0;
} else {
int res;
res = fdt_get_path(gd->fdt_blob, ofnode_to_offset(node), buf,
buflen);
if (!res)
return res;
else if (res == -FDT_ERR_NOSPACE)
return -ENOSPC;
else
return -EINVAL;
}
}
ofnode ofnode_get_by_phandle(uint phandle)
{
ofnode node;