diff options
author | Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> | 2017-06-06 12:37:41 +0300 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-06-22 02:55:34 +0200 |
commit | 6a71d8d77795e0f7d887baa95bfc0d1d2bc74899 (patch) | |
tree | 729784ba33071398831c28855b86cc10b5e87b0d /drivers/base/property.c | |
parent | 125ee6b3b0fa920c730b0991e6f083a9f5b1e4c3 (diff) |
device property: Add fwnode_graph_get_port_parent
Provide a helper to obtain the parent device fwnode without first
parsing the remote-endpoint as per fwnode_graph_get_remote_port_parent.
Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/base/property.c')
-rw-r--r-- | drivers/base/property.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/drivers/base/property.c b/drivers/base/property.c index ac3590b1f93d..692007e5a94b 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -1171,6 +1171,26 @@ fwnode_graph_get_next_endpoint(struct fwnode_handle *fwnode, EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint); /** + * fwnode_graph_get_port_parent - Return the device fwnode of a port endpoint + * @endpoint: Endpoint firmware node of the port + * + * Return: the firmware node of the device the @endpoint belongs to. + */ +struct fwnode_handle * +fwnode_graph_get_port_parent(struct fwnode_handle *endpoint) +{ + struct fwnode_handle *port, *parent; + + port = fwnode_get_parent(endpoint); + parent = fwnode_call_ptr_op(port, graph_get_port_parent); + + fwnode_handle_put(port); + + return parent; +} +EXPORT_SYMBOL_GPL(fwnode_graph_get_port_parent); + +/** * fwnode_graph_get_remote_port_parent - Return fwnode of a remote device * @fwnode: Endpoint firmware node pointing to the remote endpoint * @@ -1179,12 +1199,12 @@ EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint); struct fwnode_handle * fwnode_graph_get_remote_port_parent(struct fwnode_handle *fwnode) { - struct fwnode_handle *port, *parent; + struct fwnode_handle *endpoint, *parent; - port = fwnode_graph_get_remote_port(fwnode); - parent = fwnode_call_ptr_op(port, graph_get_port_parent); + endpoint = fwnode_graph_get_remote_endpoint(fwnode); + parent = fwnode_graph_get_port_parent(endpoint); - fwnode_handle_put(port); + fwnode_handle_put(endpoint); return parent; } |