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:
parent
891ea2d7b4
commit
e35c28a24b
@ -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)
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user