syscon: Add syscon_get_by_ofw_node

This allow to get a syscon node defined under a specific fdt node (which isn't
always the device one).
This commit is contained in:
Emmanuel Vadot 2020-11-17 14:59:58 +00:00
parent 891ea2d7b4
commit e35c28a24b
2 changed files with 16 additions and 0 deletions

View File

@ -263,6 +263,21 @@ syscon_get_ofw_node(struct syscon *syscon)
return (syscon->ofw_node);
}
int
syscon_get_by_ofw_node(device_t cdev, phandle_t node, struct syscon **syscon)
{
SYSCON_TOPO_SLOCK();
*syscon = syscon_find_by_ofw_node(node);
if (*syscon == NULL) {
SYSCON_TOPO_UNLOCK();
device_printf(cdev, "Failed to find syscon node\n");
return (ENODEV);
}
SYSCON_TOPO_UNLOCK();
return (0);
}
int
syscon_get_by_ofw_property(device_t cdev, phandle_t cnode, char *name,
struct syscon **syscon)

View File

@ -73,6 +73,7 @@ struct syscon *syscon_create_ofw_node(device_t pdev,
phandle_t syscon_get_ofw_node(struct syscon *syscon);
int syscon_get_by_ofw_property(device_t consumer, phandle_t node, char *name,
struct syscon **syscon);
int syscon_get_by_ofw_node(device_t cdev, phandle_t node, struct syscon **syscon);
#endif
#endif /* DEV_SYSCON_H */