diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-09-25 13:37:05 +0100 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-09-25 13:37:05 +0100 |
commit | 8e5d0661b3948f3c5a143f32d192710375822af2 (patch) | |
tree | ca18920d3f7219f7ffb7ca2fa372b82558938006 /drivers/of/base.c | |
parent | 39a6ac11df6579df0361922f05c43f0fac8daa37 (diff) | |
parent | 5698bd757d55b1bb87edd1a9744ab09c142abfc2 (diff) | |
download | linux-8e5d0661b3948f3c5a143f32d192710375822af2.tar.bz2 |
Merge tag 'v3.6-rc6' into spi-drivers
Linux 3.6-rc6
Conflicts:
drivers/spi/spi-omap2-mcspi.c
Diffstat (limited to 'drivers/of/base.c')
-rw-r--r-- | drivers/of/base.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index c181b94abc36..d4a1c9a043e1 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -364,6 +364,33 @@ struct device_node *of_get_next_child(const struct device_node *node, EXPORT_SYMBOL(of_get_next_child); /** + * of_get_next_available_child - Find the next available child node + * @node: parent node + * @prev: previous child of the parent node, or NULL to get first + * + * This function is like of_get_next_child(), except that it + * automatically skips any disabled nodes (i.e. status = "disabled"). + */ +struct device_node *of_get_next_available_child(const struct device_node *node, + struct device_node *prev) +{ + struct device_node *next; + + read_lock(&devtree_lock); + next = prev ? prev->sibling : node->child; + for (; next; next = next->sibling) { + if (!of_device_is_available(next)) + continue; + if (of_node_get(next)) + break; + } + of_node_put(prev); + read_unlock(&devtree_lock); + return next; +} +EXPORT_SYMBOL(of_get_next_available_child); + +/** * of_find_node_by_path - Find a node matching a full OF path * @path: The full path to match * |