By using fwnode_get_name() in fwnode_get_named_child_node(), get_named_child_node implementations become boilerplate. Removing all of them. Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> --- drivers/acpi/property.c | 20 +------------------- drivers/base/property.c | 9 ++++++++- drivers/of/property.c | 15 --------------- include/linux/fwnode.h | 3 --- 4 files changed, 9 insertions(+), 38 deletions(-) diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index 5b4c659c95d4..03cb46018920 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -587,23 +587,6 @@ static int acpi_data_get_property_array(const struct acpi_device_data *data, return 0; } -static struct fwnode_handle * -acpi_fwnode_get_named_child_node(const struct fwnode_handle *fwnode, - const char *childname) -{ - struct fwnode_handle *child; - - /* - * Find first matching named child node of this fwnode. - * For ACPI this will be a data only sub-node. - */ - fwnode_for_each_child_node(fwnode, child) - if (acpi_data_node_match(child, childname)) - return child; - - return NULL; -} - /** * __acpi_node_get_property_reference - returns handle to the referenced object * @fwnode: Firmware node to get the property from @@ -712,7 +695,7 @@ int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode, for (ref_fwnode = acpi_fwnode_handle(device); element < end && element->type == ACPI_TYPE_STRING; element++) { - ref_fwnode = acpi_fwnode_get_named_child_node( + ref_fwnode = fwnode_get_named_child_node( ref_fwnode, element->string.pointer); if (!ref_fwnode) return -EINVAL; @@ -1342,7 +1325,6 @@ acpi_fwnode_device_get_match_data(const struct fwnode_handle *fwnode, acpi_fwnode_property_read_string_array, \ .get_parent = acpi_node_get_parent, \ .get_next_child_node = acpi_get_next_subnode, \ - .get_named_child_node = acpi_fwnode_get_named_child_node, \ .get_reference_args = acpi_fwnode_get_reference_args, \ .graph_get_next_endpoint = \ acpi_graph_get_next_endpoint, \ diff --git a/drivers/base/property.c b/drivers/base/property.c index 4db710e2ce34..802f55f9fab9 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -1111,7 +1111,14 @@ struct fwnode_handle * fwnode_get_named_child_node(const struct fwnode_handle *fwnode, const char *childname) { - return fwnode_call_ptr_op(fwnode, get_named_child_node, childname); + char name[FWNODE_NAME_MAX_SIZE]; + struct fwnode_handle *child; + + fwnode_for_each_child_node(fwnode, child) + if (!fwnode_get_name(child, name) && + !strcmp(name, childname)) + return child; + return NULL; } EXPORT_SYMBOL_GPL(fwnode_get_named_child_node); diff --git a/drivers/of/property.c b/drivers/of/property.c index 9bc8fe136fa3..34b157921568 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -895,20 +895,6 @@ of_fwnode_get_next_child_node(const struct fwnode_handle *fwnode, to_of_node(child))); } -static struct fwnode_handle * -of_fwnode_get_named_child_node(const struct fwnode_handle *fwnode, - const char *childname) -{ - const struct device_node *node = to_of_node(fwnode); - struct device_node *child; - - for_each_available_child_of_node(node, child) - if (!of_node_cmp(child->name, childname)) - return of_fwnode_handle(child); - - return NULL; -} - static int of_fwnode_get_reference_args(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, @@ -1005,7 +991,6 @@ const struct fwnode_operations of_fwnode_ops = { .property_read_string_array = of_fwnode_property_read_string_array, .get_parent = of_fwnode_get_parent, .get_next_child_node = of_fwnode_get_next_child_node, - .get_named_child_node = of_fwnode_get_named_child_node, .get_reference_args = of_fwnode_get_reference_args, .graph_get_next_endpoint = of_fwnode_graph_get_next_endpoint, .graph_get_remote_endpoint = of_fwnode_graph_get_remote_endpoint, diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index cc234f5d2b40..45df74f91603 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -92,9 +92,6 @@ struct fwnode_operations { struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *fwnode, struct fwnode_handle *child); - struct fwnode_handle * - (*get_named_child_node)(const struct fwnode_handle *fwnode, - const char *name); int (*get_reference_args)(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, unsigned int nargs, unsigned int index, -- 2.19.1