summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-10-18 04:41:14 +0300
committerMichal Simek <michal.simek@xilinx.com>2015-11-04 16:49:51 +0300
commit3bc37a50e0db9978c6fbb1b2b6c3a351cebe631e (patch)
treef8a7b3409e4da684b0f394eaac2b89d49c444d33
parent44303dfa792b0a4f81d6f6a719467db9a20063b5 (diff)
downloadu-boot-3bc37a50e0db9978c6fbb1b2b6c3a351cebe631e.tar.xz
fdt: Add a function to look up a /chosen property
It is sometimes useful to find a property in the chosen node. Add a function for this. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
-rw-r--r--include/fdtdec.h11
-rw-r--r--lib/fdtdec.c15
2 files changed, 20 insertions, 6 deletions
diff --git a/include/fdtdec.h b/include/fdtdec.h
index 2de6dda04c..9fcc7a1e19 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -628,7 +628,16 @@ int fdtdec_get_alias_seq(const void *blob, const char *base, int node,
int *seqp);
/**
- * Get the offset of the given chosen node
+ * Get a property from the /chosen node
+ *
+ * @param blob Device tree blob (if NULL, then NULL is returned)
+ * @param name Property name to look up
+ * @return Value of property, or NULL if it does not exist
+ */
+const char *fdtdec_get_chosen_prop(const void *blob, const char *name);
+
+/**
+ * Get the offset of the given /chosen node
*
* This looks up a property in /chosen containing the path to another node,
* then finds the offset of that node.
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 9db033ae73..e1df144db0 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -601,16 +601,21 @@ int fdtdec_get_alias_seq(const void *blob, const char *base, int offset,
return -ENOENT;
}
-int fdtdec_get_chosen_node(const void *blob, const char *name)
+const char *fdtdec_get_chosen_prop(const void *blob, const char *name)
{
- const char *prop;
int chosen_node;
- int len;
if (!blob)
- return -FDT_ERR_NOTFOUND;
+ return NULL;
chosen_node = fdt_path_offset(blob, "/chosen");
- prop = fdt_getprop(blob, chosen_node, name, &len);
+ return fdt_getprop(blob, chosen_node, name, NULL);
+}
+
+int fdtdec_get_chosen_node(const void *blob, const char *name)
+{
+ const char *prop;
+
+ prop = fdtdec_get_chosen_prop(blob, name);
if (!prop)
return -FDT_ERR_NOTFOUND;
return fdt_path_offset(blob, prop);