fdt: Add function to get a config string from device tree
authorSimon Glass <sjg@chromium.org>
Thu, 25 Oct 2012 16:30:59 +0000 (16:30 +0000)
committerGerald Van Baren <gvb@unssw.com>
Tue, 13 Nov 2012 04:00:34 +0000 (23:00 -0500)
Add a function to look up a configuration string such as board name
and returns its value. We look in the "/config" node for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/fdtdec.h
lib/fdtdec.c

index d880fe8d9ed66a2a150987b214a74c1049b3e1b0..e828662425f3c50c10bc7a1b25133751a1ec0873 100644 (file)
@@ -367,6 +367,16 @@ int fdtdec_setup_gpio(struct fdt_gpio_state *gpio);
 int fdtdec_get_config_int(const void *blob, const char *prop_name,
                int default_val);
 
+/**
+ * Look in the FDT for a config item with the given name and return its value
+ * as a string.
+ *
+ * @param blob          FDT blob
+ * @param prop_name     property name to look up
+ * @returns property string, NULL on error.
+ */
+char *fdtdec_get_config_string(const void *blob, const char *prop_name);
+
 /*
  * Look up a property in a node and return its contents in a byte
  * array of given length. The property must have at least enough data for
index 1f500224d9477664bac478b9b7eb9e6f53d04c99..2d60c8aaafe679316efec9c07012a1a20bbd3490 100644 (file)
@@ -513,16 +513,6 @@ const u8 *fdtdec_locate_byte_array(const void *blob, int node,
        return cell;
 }
 
-/**
- * Look in the FDT for a config item with the given name and return its value
- * as a 32-bit integer. The property must have at least 4 bytes of data. The
- * value of the first cell is returned.
- *
- * @param blob         FDT blob to use
- * @param prop_name    Node property name
- * @param default_val  default value to return if the property is not found
- * @return integer value, if found, or default_val if not
- */
 int fdtdec_get_config_int(const void *blob, const char *prop_name,
                int default_val)
 {
@@ -534,3 +524,21 @@ int fdtdec_get_config_int(const void *blob, const char *prop_name,
                return default_val;
        return fdtdec_get_int(blob, config_node, prop_name, default_val);
 }
+
+char *fdtdec_get_config_string(const void *blob, const char *prop_name)
+{
+       const char *nodep;
+       int nodeoffset;
+       int len;
+
+       debug("%s: %s\n", __func__, prop_name);
+       nodeoffset = fdt_path_offset(blob, "/config");
+       if (nodeoffset < 0)
+               return NULL;
+
+       nodep = fdt_getprop(blob, nodeoffset, prop_name, &len);
+       if (!nodep)
+               return NULL;
+
+       return (char *)nodep;
+}