On Thu, Mar 03, 2022 at 02:33:47PM -0800, Bjorn Andersson wrote: > The newly introduced helpers for searching for matches in the case of > multiple connections can be resused by the single-connection case, so do > this to save some duplication. Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > --- > > Changes since v2: > - None > > Changes since v1: > - None > > drivers/base/property.c | 55 ++++------------------------------------- > 1 file changed, 5 insertions(+), 50 deletions(-) > > diff --git a/drivers/base/property.c b/drivers/base/property.c > index 5cda205136f6..81156dc97ad7 100644 > --- a/drivers/base/property.c > +++ b/drivers/base/property.c > @@ -1193,31 +1193,6 @@ const void *device_get_match_data(struct device *dev) > } > EXPORT_SYMBOL_GPL(device_get_match_data); > > -static void * > -fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id, > - void *data, devcon_match_fn_t match) > -{ > - struct fwnode_handle *node; > - struct fwnode_handle *ep; > - void *ret; > - > - fwnode_graph_for_each_endpoint(fwnode, ep) { > - node = fwnode_graph_get_remote_port_parent(ep); > - if (!fwnode_device_is_available(node)) { > - fwnode_handle_put(node); > - continue; > - } > - > - ret = match(node, con_id, data); > - fwnode_handle_put(node); > - if (ret) { > - fwnode_handle_put(ep); > - return ret; > - } > - } > - return NULL; > -} > - > static unsigned int fwnode_graph_devcon_matches(struct fwnode_handle *fwnode, > const char *con_id, void *data, > devcon_match_fn_t match, > @@ -1252,28 +1227,6 @@ static unsigned int fwnode_graph_devcon_matches(struct fwnode_handle *fwnode, > return count; > } > > -static void * > -fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id, > - void *data, devcon_match_fn_t match) > -{ > - struct fwnode_handle *node; > - void *ret; > - int i; > - > - for (i = 0; ; i++) { > - node = fwnode_find_reference(fwnode, con_id, i); > - if (IS_ERR(node)) > - break; > - > - ret = match(node, NULL, data); > - fwnode_handle_put(node); > - if (ret) > - return ret; > - } > - > - return NULL; > -} > - > static unsigned int fwnode_devcon_matches(struct fwnode_handle *fwnode, > const char *con_id, void *data, > devcon_match_fn_t match, > @@ -1320,16 +1273,18 @@ void *fwnode_connection_find_match(struct fwnode_handle *fwnode, > const char *con_id, void *data, > devcon_match_fn_t match) > { > + unsigned int count; > void *ret; > > if (!fwnode || !match) > return NULL; > > - ret = fwnode_graph_devcon_match(fwnode, con_id, data, match); > - if (ret) > + count = fwnode_graph_devcon_matches(fwnode, con_id, data, match, &ret, 1); > + if (count) > return ret; > > - return fwnode_devcon_match(fwnode, con_id, data, match); > + count = fwnode_devcon_matches(fwnode, con_id, data, match, &ret, 1); > + return count ? ret : NULL; > } > EXPORT_SYMBOL_GPL(fwnode_connection_find_match); > > -- > 2.33.1 > -- With Best Regards, Andy Shevchenko