mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
of: merge of_find_all_nodes() implementations
Merge common code between Microblaze and PowerPC, and make it available to Sparc Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Wolfram Sang <w.sang@pengutronix.de> Acked-by: Michal Simek <monstr@monstr.eu> Acked-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> Acked-by: Stephen Rothwell <sfr@canb.auug.org.au>
This commit is contained in:
parent
82b2928c95
commit
e91edcf5a2
4 changed files with 27 additions and 48 deletions
|
@ -859,29 +859,6 @@ struct device_node *of_find_node_by_phandle(phandle handle)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_find_node_by_phandle);
|
EXPORT_SYMBOL(of_find_node_by_phandle);
|
||||||
|
|
||||||
/**
|
|
||||||
* of_find_all_nodes - Get next node in global list
|
|
||||||
* @prev: Previous node or NULL to start iteration
|
|
||||||
* of_node_put() will be called on it
|
|
||||||
*
|
|
||||||
* Returns a node pointer with refcount incremented, use
|
|
||||||
* of_node_put() on it when done.
|
|
||||||
*/
|
|
||||||
struct device_node *of_find_all_nodes(struct device_node *prev)
|
|
||||||
{
|
|
||||||
struct device_node *np;
|
|
||||||
|
|
||||||
read_lock(&devtree_lock);
|
|
||||||
np = prev ? prev->allnext : allnodes;
|
|
||||||
for (; np != NULL; np = np->allnext)
|
|
||||||
if (of_node_get(np))
|
|
||||||
break;
|
|
||||||
of_node_put(prev);
|
|
||||||
read_unlock(&devtree_lock);
|
|
||||||
return np;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(of_find_all_nodes);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_node_get - Increment refcount of a node
|
* of_node_get - Increment refcount of a node
|
||||||
* @node: Node to inc refcount, NULL is supported to
|
* @node: Node to inc refcount, NULL is supported to
|
||||||
|
|
|
@ -1316,29 +1316,6 @@ struct device_node *of_find_next_cache_node(struct device_node *np)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* of_find_all_nodes - Get next node in global list
|
|
||||||
* @prev: Previous node or NULL to start iteration
|
|
||||||
* of_node_put() will be called on it
|
|
||||||
*
|
|
||||||
* Returns a node pointer with refcount incremented, use
|
|
||||||
* of_node_put() on it when done.
|
|
||||||
*/
|
|
||||||
struct device_node *of_find_all_nodes(struct device_node *prev)
|
|
||||||
{
|
|
||||||
struct device_node *np;
|
|
||||||
|
|
||||||
read_lock(&devtree_lock);
|
|
||||||
np = prev ? prev->allnext : allnodes;
|
|
||||||
for (; np != 0; np = np->allnext)
|
|
||||||
if (of_node_get(np))
|
|
||||||
break;
|
|
||||||
of_node_put(prev);
|
|
||||||
read_unlock(&devtree_lock);
|
|
||||||
return np;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(of_find_all_nodes);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_node_get - Increment refcount of a node
|
* of_node_get - Increment refcount of a node
|
||||||
* @node: Node to inc refcount, NULL is supported to
|
* @node: Node to inc refcount, NULL is supported to
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
*
|
*
|
||||||
* Adapted for sparc and sparc64 by David S. Miller davem@davemloft.net
|
* Adapted for sparc and sparc64 by David S. Miller davem@davemloft.net
|
||||||
*
|
*
|
||||||
* Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell.
|
* Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell and
|
||||||
|
* Grant Likely.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -82,6 +83,29 @@ struct property *of_find_property(const struct device_node *np,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_find_property);
|
EXPORT_SYMBOL(of_find_property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_find_all_nodes - Get next node in global list
|
||||||
|
* @prev: Previous node or NULL to start iteration
|
||||||
|
* of_node_put() will be called on it
|
||||||
|
*
|
||||||
|
* Returns a node pointer with refcount incremented, use
|
||||||
|
* of_node_put() on it when done.
|
||||||
|
*/
|
||||||
|
struct device_node *of_find_all_nodes(struct device_node *prev)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
|
read_lock(&devtree_lock);
|
||||||
|
np = prev ? prev->allnext : allnodes;
|
||||||
|
for (; np != NULL; np = np->allnext)
|
||||||
|
if (of_node_get(np))
|
||||||
|
break;
|
||||||
|
of_node_put(prev);
|
||||||
|
read_unlock(&devtree_lock);
|
||||||
|
return np;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(of_find_all_nodes);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find a property with a given name for a given node
|
* Find a property with a given name for a given node
|
||||||
* and return the value.
|
* and return the value.
|
||||||
|
|
|
@ -79,6 +79,8 @@ set_node_proc_entry(struct device_node *dn, struct proc_dir_entry *de)
|
||||||
dn->pde = de;
|
dn->pde = de;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern struct device_node *of_find_all_nodes(struct device_node *prev);
|
||||||
|
|
||||||
#if defined(CONFIG_SPARC)
|
#if defined(CONFIG_SPARC)
|
||||||
/* Dummy ref counting routines - to be implemented later */
|
/* Dummy ref counting routines - to be implemented later */
|
||||||
static inline struct device_node *of_node_get(struct device_node *node)
|
static inline struct device_node *of_node_get(struct device_node *node)
|
||||||
|
@ -90,7 +92,6 @@ static inline void of_node_put(struct device_node *node)
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
extern struct device_node *of_find_all_nodes(struct device_node *prev);
|
|
||||||
extern struct device_node *of_node_get(struct device_node *node);
|
extern struct device_node *of_node_get(struct device_node *node);
|
||||||
extern void of_node_put(struct device_node *node);
|
extern void of_node_put(struct device_node *node);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue