summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-12-17 09:36:20 -0700
committerSimon Glass <sjg@chromium.org>2023-12-31 07:21:02 -0700
commit61a695e451fb6abe65de193c70dd981af6fb7a51 (patch)
tree48e830d3ef077f54c8c089f77748e9e55c24a0cc
parent490afe74287fef246320c6473f74b2fc2a62c745 (diff)
downloadu-boot-61a695e451fb6abe65de193c70dd981af6fb7a51.tar.gz
u-boot-61a695e451fb6abe65de193c70dd981af6fb7a51.tar.bz2
u-boot-61a695e451fb6abe65de193c70dd981af6fb7a51.zip
fdtgrep: Move property checking into a function
The h_include() function includes a piece which checks if a node contains a property being searched for. Move this into its own function to reduce the size of the h_include() function. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/fdtgrep.c48
1 files changed, 35 insertions, 13 deletions
diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
index b06a1a7a83..ca639a2d9f 100644
--- a/tools/fdtgrep.c
+++ b/tools/fdtgrep.c
@@ -576,6 +576,40 @@ static int check_type_include(void *priv, int type, const char *data, int size)
}
/**
+ * check_props() - Check if a node has properties that we want to include
+ *
+ * Calls check_type_include() for each property in the nodn, returning 1 if
+ * that function returns 1 for any of them
+ *
+ * @disp: Display structure, holding info about our options
+ * @fdt: Devicetree blob to check
+ * @node: Node offset to check
+ * @inc: Current value of the 'include' variable (see h_include())
+ * Return: 0 to exclude, 1 to include, -1 if no information is available
+ */
+static int check_props(struct display_info *disp, const void *fdt, int node,
+ int inc)
+{
+ int offset;
+
+ for (offset = fdt_first_property_offset(fdt, node);
+ offset > 0 && inc != 1;
+ offset = fdt_next_property_offset(fdt, offset)) {
+ const struct fdt_property *prop;
+ const char *str;
+
+ prop = fdt_get_property_by_offset(fdt, offset, NULL);
+ if (!prop)
+ continue;
+ str = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+ inc = check_type_include(disp, FDT_NODE_HAS_PROP, str,
+ strlen(str));
+ }
+
+ return inc;
+}
+
+/**
* h_include() - Include handler function for fdt_first_region()
*
* This function decides whether to include or exclude a node, property or
@@ -617,19 +651,7 @@ static int h_include(void *priv, const void *fdt, int offset, int type,
(disp->types_inc & FDT_NODE_HAS_PROP)) {
debug(" - checking node '%s'\n",
fdt_get_name(fdt, offset, NULL));
- for (offset = fdt_first_property_offset(fdt, offset);
- offset > 0 && inc != 1;
- offset = fdt_next_property_offset(fdt, offset)) {
- const struct fdt_property *prop;
- const char *str;
-
- prop = fdt_get_property_by_offset(fdt, offset, NULL);
- if (!prop)
- continue;
- str = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
- inc = check_type_include(priv, FDT_NODE_HAS_PROP, str,
- strlen(str));
- }
+ inc = check_props(disp, fdt, offset, inc);
if (inc == -1)
inc = 0;
}