forked from mirrors/linux
		
	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>
This commit is contained in:
		
							parent
							
								
									ee8905963e
								
							
						
					
					
						commit
						bfe446e37c
					
				
					 2 changed files with 39 additions and 0 deletions
				
			
		|  | @ -2080,6 +2080,38 @@ int of_graph_parse_endpoint(const struct device_node *node, | ||||||
| } | } | ||||||
| EXPORT_SYMBOL(of_graph_parse_endpoint); | EXPORT_SYMBOL(of_graph_parse_endpoint); | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * of_graph_get_port_by_id() - get the port matching a given id | ||||||
|  |  * @parent: pointer to the parent device node | ||||||
|  |  * @id: id of the port | ||||||
|  |  * | ||||||
|  |  * Return: A 'port' node pointer with refcount incremented. The caller | ||||||
|  |  * has to use of_node_put() on it when done. | ||||||
|  |  */ | ||||||
|  | struct device_node *of_graph_get_port_by_id(struct device_node *parent, u32 id) | ||||||
|  | { | ||||||
|  | 	struct device_node *node, *port; | ||||||
|  | 
 | ||||||
|  | 	node = of_get_child_by_name(parent, "ports"); | ||||||
|  | 	if (node) | ||||||
|  | 		parent = node; | ||||||
|  | 
 | ||||||
|  | 	for_each_child_of_node(parent, port) { | ||||||
|  | 		u32 port_id = 0; | ||||||
|  | 
 | ||||||
|  | 		if (of_node_cmp(port->name, "port") != 0) | ||||||
|  | 			continue; | ||||||
|  | 		of_property_read_u32(port, "reg", &port_id); | ||||||
|  | 		if (id == port_id) | ||||||
|  | 			break; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	of_node_put(node); | ||||||
|  | 
 | ||||||
|  | 	return port; | ||||||
|  | } | ||||||
|  | EXPORT_SYMBOL(of_graph_get_port_by_id); | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * of_graph_get_next_endpoint() - get next endpoint node |  * of_graph_get_next_endpoint() - get next endpoint node | ||||||
|  * @parent: pointer to the parent device node |  * @parent: pointer to the parent device node | ||||||
|  |  | ||||||
|  | @ -40,6 +40,7 @@ struct of_endpoint { | ||||||
| #ifdef CONFIG_OF | #ifdef CONFIG_OF | ||||||
| int of_graph_parse_endpoint(const struct device_node *node, | int of_graph_parse_endpoint(const struct device_node *node, | ||||||
| 				struct of_endpoint *endpoint); | 				struct of_endpoint *endpoint); | ||||||
|  | struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id); | ||||||
| struct device_node *of_graph_get_next_endpoint(const struct device_node *parent, | struct device_node *of_graph_get_next_endpoint(const struct device_node *parent, | ||||||
| 					struct device_node *previous); | 					struct device_node *previous); | ||||||
| struct device_node *of_graph_get_remote_port_parent( | struct device_node *of_graph_get_remote_port_parent( | ||||||
|  | @ -53,6 +54,12 @@ static inline int of_graph_parse_endpoint(const struct device_node *node, | ||||||
| 	return -ENOSYS; | 	return -ENOSYS; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static inline struct device_node *of_graph_get_port_by_id( | ||||||
|  | 					struct device_node *node, u32 id) | ||||||
|  | { | ||||||
|  | 	return NULL; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static inline struct device_node *of_graph_get_next_endpoint( | static inline struct device_node *of_graph_get_next_endpoint( | ||||||
| 					const struct device_node *parent, | 					const struct device_node *parent, | ||||||
| 					struct device_node *previous) | 					struct device_node *previous) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Philipp Zabel
						Philipp Zabel