[U-Boot-Users] [RFC libfdt update][PATCH 1/2] Removed some nonused fdt functions and moved fdt_find_and_setprop out of libfdt

Kumar Gala galak at kernel.crashing.org
Wed Oct 24 18:06:30 CEST 2007


Removed:
	fdt_node_is_compatible
	fdt_find_node_by_type
	fdt_find_compatible_node

To ease merge of newer libfdt as we aren't using them anywhere at this time.

Also moved fdt_find_and_setprop out of libfdt into fdt_support.c for the same
reason.

Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
---
(Post here as a start towards import of updated libfdt)


 common/fdt_support.c |   26 ++++++++++++
 include/libfdt.h     |    6 ---
 libfdt/fdt_ro.c      |  112 --------------------------------------------------
 libfdt/fdt_rw.c      |   26 ------------
 4 files changed, 26 insertions(+), 144 deletions(-)

diff --git a/common/fdt_support.c b/common/fdt_support.c
index 175d59e..6a5b27a 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -44,6 +44,32 @@ struct fdt_header *fdt;

 /********************************************************************/

+/**
+ * fdt_find_and_setprop: Find a node and set it's property
+ *
+ * @fdt: ptr to device tree
+ * @node: path of node
+ * @prop: property name
+ * @val: ptr to new value
+ * @len: length of new property value
+ * @create: flag to create the property if it doesn't exist
+ *
+ * Convenience function to directly set a property given the path to the node.
+ */
+int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
+			 const void *val, int len, int create)
+{
+	int nodeoff = fdt_find_node_by_path(fdt, node);
+
+	if (nodeoff < 0)
+		return nodeoff;
+
+	if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL))
+		return 0; /* create flag not set; so exit quietly */
+
+	return fdt_setprop(fdt, nodeoff, prop, val, len);
+}
+
 int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 {
 	int   nodeoffset;
diff --git a/include/libfdt.h b/include/libfdt.h
index 38c65a9..ba348a9 100644
--- a/include/libfdt.h
+++ b/include/libfdt.h
@@ -78,12 +78,6 @@ int fdt_subnode_offset_namelen(const void *fdt, int parentoffset,
 int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name);

 int fdt_find_node_by_path(const void *fdt, const char *path);
-int fdt_find_node_by_type(const void *fdt, int nodeoffset, const char *type);
-
-int fdt_node_is_compatible(const void *fdt, int nodeoffset,
-			   const char *compat);
-int fdt_find_compatible_node(const void *fdt, int nodeoffset,
-			     const char *type, const char *compat);

 struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset,
 				      const char *name, int *lenp);
diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c
index 46d525d..347cdaa 100644
--- a/libfdt/fdt_ro.c
+++ b/libfdt/fdt_ro.c
@@ -86,118 +86,6 @@ char *fdt_string(const void *fdt, int stroffset)
 }

 /*
- * Check if the specified node is compatible by comparing the tokens
- * in its "compatible" property with the specified string:
- *
- *   nodeoffset - starting place of the node
- *   compat     - the string to match to one of the tokens in the
- *                "compatible" list.
- */
-int fdt_node_is_compatible(const void *fdt, int nodeoffset,
-			   const char *compat)
-{
-	const char* cp;
-	int cplen, len;
-
-	cp = fdt_getprop(fdt, nodeoffset, "compatible", &cplen);
-	if (cp == NULL)
-		return 0;
-	while (cplen > 0) {
-		if (strncmp(cp, compat, strlen(compat)) == 0)
-			return 1;
-		len = strlen(cp) + 1;
-		cp += len;
-		cplen -= len;
-	}
-
-	return 0;
-}
-
-/*
- * Find a node by its device type property. On success, the offset of that
- * node is returned or an error code otherwise:
- *
- *   nodeoffset - the node to start searching from or 0, the node you pass
- *                will not be searched, only the next one will; typically,
- *                you pass 0 to start the search and then what the previous
- *                call returned.
- *   type       - the device type string to match against.
- */
-int fdt_find_node_by_type(const void *fdt, int nodeoffset, const char *type)
-{
-	int offset, nextoffset;
-	struct fdt_property *prop;
-	uint32_t tag;
-	int len, ret;
-
-	CHECK_HEADER(fdt);
-
-	tag = fdt_next_tag(fdt, nodeoffset, &nextoffset, NULL);
-	if (tag != FDT_BEGIN_NODE)
-		return -FDT_ERR_BADOFFSET;
-	if (nodeoffset)
-		nodeoffset = 0;	/* start searching with next node */
-
-	while (1) {
-		offset = nextoffset;
-		tag = fdt_next_tag(fdt, offset, &nextoffset, NULL);
-
-		switch (tag) {
-		case FDT_BEGIN_NODE:
-			nodeoffset = offset;
-			break;
-
-		case FDT_PROP:
-			if (nodeoffset == 0)
-				break;
-			ret = prop_name_eq(fdt, offset, "device_type",
-					   &prop, &len);
-			if (ret < 0)
-				return ret;
-			else if (ret > 0 &&
-				 strncmp(prop->data, type, len - 1) == 0)
-			    return nodeoffset;
-			break;
-
-		case FDT_END_NODE:
-		case FDT_NOP:
-			break;
-
-		case FDT_END:
-			return -FDT_ERR_NOTFOUND;
-
-		default:
-			return -FDT_ERR_BADSTRUCTURE;
-		}
-	}
-}
-
-/*
- * Find a node based on its device type and one of the tokens in its its
- * "compatible" property. On success, the offset of that node is returned
- * or an error code otherwise:
- *
- *   nodeoffset - the node to start searching from or 0, the node you pass
- *                will not be searched, only the next one will; typically,
- *                you pass 0 to start the search and then what the previous
- *                call returned.
- *   type       - the device type string to match against.
- *   compat     - the string to match to one of the tokens in the
- *                "compatible" list.
- */
-int fdt_find_compatible_node(const void *fdt, int nodeoffset,
-			     const char *type, const char *compat)
-{
-	int offset;
-
-	offset = fdt_find_node_by_type(fdt, nodeoffset, type);
-	if (offset < 0 || fdt_node_is_compatible(fdt, offset, compat))
-		return offset;
-
-	return -FDT_ERR_NOTFOUND;
-}
-
-/*
  * Return the node offset of the node specified by:
  *   parentoffset - starting place (0 to start at the root)
  *   name         - name being searched for
diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c
index 55fcc41..693bfe4 100644
--- a/libfdt/fdt_rw.c
+++ b/libfdt/fdt_rw.c
@@ -188,32 +188,6 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name,
 	return 0;
 }

-/**
- * fdt_find_and_setprop: Find a node and set it's property
- *
- * @fdt: ptr to device tree
- * @node: path of node
- * @prop: property name
- * @val: ptr to new value
- * @len: length of new property value
- * @create: flag to create the property if it doesn't exist
- *
- * Convenience function to directly set a property given the path to the node.
- */
-int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
-			 const void *val, int len, int create)
-{
-	int nodeoff = fdt_find_node_by_path(fdt, node);
-
-	if (nodeoff < 0)
-		return nodeoff;
-
-	if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL))
-		return 0; /* create flag not set; so exit quietly */
-
-	return fdt_setprop(fdt, nodeoff, prop, val, len);
-}
-
 int fdt_delprop(void *fdt, int nodeoffset, const char *name)
 {
 	struct fdt_property *prop;
-- 
1.5.2.4





More information about the U-Boot mailing list