On Mon, 23 Jun 2014 21:00:39 +0300, Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx> wrote: > Hi Guenter, > > On Jun 23, 2014, at 8:58 PM, Guenter Roeck wrote: > > > On 06/22/2014 02:40 AM, Pantelis Antoniou wrote: > >> __of_find_node_by_full_name recursively searches for a matching node > >> with the given full name without taking any locks. > >> > >> of_find_node_by_full_name takes locks and takes a reference on the > >> matching node. > >> > >> Signed-off-by: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx> > >> --- > >> drivers/of/base.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ > >> include/linux/of.h | 4 ++++ > >> 2 files changed, 62 insertions(+) > >> > >> diff --git a/drivers/of/base.c b/drivers/of/base.c > >> index d3493e1..80fef33 100644 > >> --- a/drivers/of/base.c > >> +++ b/drivers/of/base.c > >> @@ -1201,6 +1201,64 @@ static void *of_find_property_value_of_size(const struct device_node *np, > >> } > >> > >> /** > >> + * __of_find_node_by_full_name - Find a node with the full name recursively > >> + * @node: Root of the tree to perform the search > >> + * @full_name: Full name of the node to find. > >> + * > >> + * Find a node with the give full name by recursively following any of > >> + * the child node links. > >> + * Returns the matching node, or NULL if not found. > >> + * Note that the devtree lock is not taken, so this function is only > >> + * safe to call on either detached trees, or when devtree lock is already > >> + * taken. > >> + */ > >> +struct device_node *__of_find_node_by_full_name(struct device_node *node, > >> + const char *full_name) > >> +{ > >> + struct device_node *child, *found; > >> + > >> + if (node == NULL) > >> + return NULL; > >> + > >> + /* check */ > >> + if (of_node_cmp(node->full_name, full_name) == 0) > >> + return node; > >> + > >> + __for_each_child_of_node(node, child) { > >> + found = __of_find_node_by_full_name(child, full_name); > >> + if (found != NULL) > >> + return found; > >> + } > >> + > >> + return NULL; > >> +} > >> +EXPORT_SYMBOL(__of_find_node_by_full_name); > >> + > >> +/** > >> + * of_find_node_by_full_name - Find a node with the full name recursively > >> + * @node: Root of the tree to perform the search > >> + * @full_name: Full name of the node to find. > >> + * > >> + * Find a node with the give full name by recursively following any of > >> + * the child node links. > >> + * Returns the matching node (with a ref taken), or NULL if not found. > >> + */ > >> +struct device_node *of_find_node_by_full_name(struct device_node *node, > >> + const char *full_name) > >> +{ > >> + unsigned long flags; > >> + struct device_node *np; > >> + > >> + raw_spin_lock_irqsave(&devtree_lock, flags); > >> + np = of_find_node_by_full_name(node, full_name); > > > > Should this be __of_find_node_by_full_name, or am I missing something ? > > > > Ugh, you're not missing something. This slipped through since this is not > used in the current code Then perhaps the function shouldn't exist at all. g. -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html