diff options
author | Philipp Zabel <p.zabel@pengutronix.de> | 2014-03-11 06:21:11 -0400 |
---|---|---|
committer | Philipp Zabel <p.zabel@pengutronix.de> | 2015-02-23 05:42:24 -0500 |
commit | bfe446e37c4efd8ade454911e8f80414bcbfc10d (patch) | |
tree | d8fe4cfe825c975e1ceac2a76a2dca97e47154e7 /drivers/of | |
parent | ee8905963ed0bc9dfc0952dc35e16e233c10e212 (diff) |
of: Add of_graph_get_port_by_id function
This patch adds a function to get a port device tree node by port id,
or reg property value.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/base.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index 05b20f1cca7b..6398b9ca9157 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -2081,6 +2081,38 @@ int of_graph_parse_endpoint(const struct device_node *node, | |||
2081 | EXPORT_SYMBOL(of_graph_parse_endpoint); | 2081 | EXPORT_SYMBOL(of_graph_parse_endpoint); |
2082 | 2082 | ||
2083 | /** | 2083 | /** |
2084 | * of_graph_get_port_by_id() - get the port matching a given id | ||
2085 | * @parent: pointer to the parent device node | ||
2086 | * @id: id of the port | ||
2087 | * | ||
2088 | * Return: A 'port' node pointer with refcount incremented. The caller | ||
2089 | * has to use of_node_put() on it when done. | ||
2090 | */ | ||
2091 | struct device_node *of_graph_get_port_by_id(struct device_node *parent, u32 id) | ||
2092 | { | ||
2093 | struct device_node *node, *port; | ||
2094 | |||
2095 | node = of_get_child_by_name(parent, "ports"); | ||
2096 | if (node) | ||
2097 | parent = node; | ||
2098 | |||
2099 | for_each_child_of_node(parent, port) { | ||
2100 | u32 port_id = 0; | ||
2101 | |||
2102 | if (of_node_cmp(port->name, "port") != 0) | ||
2103 | continue; | ||
2104 | of_property_read_u32(port, "reg", &port_id); | ||
2105 | if (id == port_id) | ||
2106 | break; | ||
2107 | } | ||
2108 | |||
2109 | of_node_put(node); | ||
2110 | |||
2111 | return port; | ||
2112 | } | ||
2113 | EXPORT_SYMBOL(of_graph_get_port_by_id); | ||
2114 | |||
2115 | /** | ||
2084 | * of_graph_get_next_endpoint() - get next endpoint node | 2116 | * of_graph_get_next_endpoint() - get next endpoint node |
2085 | * @parent: pointer to the parent device node | 2117 | * @parent: pointer to the parent device node |
2086 | * @prev: previous endpoint node, or NULL to get first | 2118 | * @prev: previous endpoint node, or NULL to get first |