Commit 21ea73f5 authored by Mika Westerberg's avatar Mika Westerberg Committed by Rafael J. Wysocki

device property: Add fwnode_get_named_child_node()

Since now we have means to enumerate all children of any fwnode even in
ACPI we can implement fwnode_get_named_child_node(). This is similar than
device_get_named_child_node() with the exception that it can be called to
any fwnode handle. Make device_get_named_child_node() call directly this
new function.

This is useful in cases where we need to be able to find child nodes which
are not direct descendants of the parent device.
Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 34055190
...@@ -1000,20 +1000,20 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, ...@@ -1000,20 +1000,20 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev,
EXPORT_SYMBOL_GPL(device_get_next_child_node); EXPORT_SYMBOL_GPL(device_get_next_child_node);
/** /**
* device_get_named_child_node - Return first matching named child node handle * fwnode_get_named_child_node - Return first matching named child node handle
* @dev: Device to find the named child node for. * @fwnode: Firmware node to find the named child node for.
* @childname: String to match child node name against. * @childname: String to match child node name against.
*/ */
struct fwnode_handle *device_get_named_child_node(struct device *dev, struct fwnode_handle *fwnode_get_named_child_node(struct fwnode_handle *fwnode,
const char *childname) const char *childname)
{ {
struct fwnode_handle *child; struct fwnode_handle *child;
/* /*
* Find first matching named child node of this device. * Find first matching named child node of this fwnode.
* For ACPI this will be a data only sub-node. * For ACPI this will be a data only sub-node.
*/ */
device_for_each_child_node(dev, child) { fwnode_for_each_child_node(fwnode, child) {
if (is_of_node(child)) { if (is_of_node(child)) {
if (!of_node_cmp(to_of_node(child)->name, childname)) if (!of_node_cmp(to_of_node(child)->name, childname))
return child; return child;
...@@ -1025,6 +1025,18 @@ struct fwnode_handle *device_get_named_child_node(struct device *dev, ...@@ -1025,6 +1025,18 @@ struct fwnode_handle *device_get_named_child_node(struct device *dev,
return NULL; return NULL;
} }
EXPORT_SYMBOL_GPL(fwnode_get_named_child_node);
/**
* device_get_named_child_node - Return first matching named child node handle
* @dev: Device to find the named child node for.
* @childname: String to match child node name against.
*/
struct fwnode_handle *device_get_named_child_node(struct device *dev,
const char *childname)
{
return fwnode_get_named_child_node(dev_fwnode(dev), childname);
}
EXPORT_SYMBOL_GPL(device_get_named_child_node); EXPORT_SYMBOL_GPL(device_get_named_child_node);
/** /**
......
...@@ -85,6 +85,8 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, ...@@ -85,6 +85,8 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev,
for (child = device_get_next_child_node(dev, NULL); child; \ for (child = device_get_next_child_node(dev, NULL); child; \
child = device_get_next_child_node(dev, child)) child = device_get_next_child_node(dev, child))
struct fwnode_handle *fwnode_get_named_child_node(struct fwnode_handle *fwnode,
const char *childname);
struct fwnode_handle *device_get_named_child_node(struct device *dev, struct fwnode_handle *device_get_named_child_node(struct device *dev,
const char *childname); const char *childname);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment