summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-07-23 06:55:16 -0600
committerSimon Glass <sjg@chromium.org>2014-07-23 14:07:26 +0100
commit3234aa4babd79bf92239409145db4fda2f505051 (patch)
tree61691075181b112acc3326a982026f01ea2770c5
parentc910e2e2da49036496a5b8b34425043675218d51 (diff)
downloadu-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.h11
-rw-r--r--lib/fdtdec.c15
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)
{
/*