aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/of/base.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index b306fef1ac41..80c9deca5f35 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -138,6 +138,31 @@ struct device_node *of_get_parent(const struct device_node *node)
138EXPORT_SYMBOL(of_get_parent); 138EXPORT_SYMBOL(of_get_parent);
139 139
140/** 140/**
141 * of_get_next_parent - Iterate to a node's parent
142 * @node: Node to get parent of
143 *
144 * This is like of_get_parent() except that it drops the
145 * refcount on the passed node, making it suitable for iterating
146 * through a node's parents.
147 *
148 * Returns a node pointer with refcount incremented, use
149 * of_node_put() on it when done.
150 */
151struct device_node *of_get_next_parent(struct device_node *node)
152{
153 struct device_node *parent;
154
155 if (!node)
156 return NULL;
157
158 read_lock(&devtree_lock);
159 parent = of_node_get(node->parent);
160 of_node_put(node);
161 read_unlock(&devtree_lock);
162 return parent;
163}
164
165/**
141 * of_get_next_child - Iterate a node childs 166 * of_get_next_child - Iterate a node childs
142 * @node: parent node 167 * @node: parent node
143 * @prev: previous child of the parent node, or NULL to get first 168 * @prev: previous child of the parent node, or NULL to get first