diff options
author | Simon Glass | 2023-12-17 09:36:20 -0700 |
---|---|---|
committer | Simon Glass | 2023-12-31 07:21:02 -0700 |
commit | 61a695e451fb6abe65de193c70dd981af6fb7a51 (patch) | |
tree | 48e830d3ef077f54c8c089f77748e9e55c24a0cc /tools | |
parent | 490afe74287fef246320c6473f74b2fc2a62c745 (diff) |
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>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/fdtgrep.c | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c index b06a1a7a838..ca639a2d9f4 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; } |