/* Returns a node pointer with refcount incremented, use of_node_put() on it when done.  */
struct device_node* of_find_node_with_property(struct device_node *from, const char *prop_name)
/* Returns a node pointer with refcount incremented, use of_node_put() on it when done.  */
struct device_node* of_find_node_with_property(struct device_node *from, const char *prop_name)
{
	struct device_node *np;
	struct property *pp;
	read_lock(&devtree_lock);
	np = from ? from->allnext : allnodes;
	for (; np; np = np->allnext) {
		for (pp = np->properties; pp != 0; pp = pp->next) {
			if (of_prop_cmp(pp->name, prop_name) == 0) {
				of_node_get(np);
				goto out;
			}
		}
	}
out:
	of_node_put(from);
	read_unlock(&devtree_lock);
	return np;
}