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: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
34055190b1
commit
21ea73f54c
|
@ -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,
|
||||||
|
|
||||||
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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue