diff options
author | Simon Glass <sjg@chromium.org> | 2014-07-23 06:55:16 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-07-23 14:07:26 +0100 |
commit | 3234aa4babd79bf92239409145db4fda2f505051 (patch) | |
tree | 61691075181b112acc3326a982026f01ea2770c5 | |
parent | c910e2e2da49036496a5b8b34425043675218d51 (diff) | |
download | u-boot-imx-3234aa4babd79bf92239409145db4fda2f505051.zip u-boot-imx-3234aa4babd79bf92239409145db4fda2f505051.tar.gz u-boot-imx-3234aa4babd79bf92239409145db4fda2f505051.tar.bz2 |
fdt: Add a function to get the node offset of an alias
This simple function returns the node offset of a named alias.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | include/fdtdec.h | 11 | ||||
-rw-r--r-- | lib/fdtdec.c | 15 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/fdtdec.h b/include/fdtdec.h index f454f7e..856e6cf 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -363,6 +363,17 @@ int fdtdec_add_aliases_for_id(const void *blob, const char *name, int fdtdec_get_alias_seq(const void *blob, const char *base, int node, int *seqp); +/** + * Get the offset of the given alias node + * + * This looks up an alias in /aliases then finds the offset of that node. + * + * @param blob Device tree blob (if NULL, then error is returned) + * @param name Alias name, e.g. "console" + * @return Node offset referred to by that alias, or -ve FDT_ERR_... + */ +int fdtdec_get_alias_node(const void *blob, const char *name); + /* * Get the name for a compatible ID * diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 1b4ae9f..eb5aa20 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -365,6 +365,21 @@ int fdtdec_get_alias_seq(const void *blob, const char *base, int offset, return -ENOENT; } +int fdtdec_get_alias_node(const void *blob, const char *name) +{ + const char *prop; + int alias_node; + int len; + + if (!blob) + return -FDT_ERR_NOTFOUND; + alias_node = fdt_path_offset(blob, "/aliases"); + prop = fdt_getprop(blob, alias_node, name, &len); + if (!prop) + return -FDT_ERR_NOTFOUND; + return fdt_path_offset(blob, prop); +} + int fdtdec_check_fdt(void) { /* |