summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/arm/ti/ti_hwmods.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-09-24 11:05:03 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-11-13 10:47:04 +0100
commita5ddb0ea69f21c16b7697a935d7a0c16bb3cffcf (patch)
treedb091fb0f7d091804482156c9f3f55879ac93d5b /freebsd/sys/arm/ti/ti_hwmods.c
parenttest/syscalls01: Fix sporadic test failures (diff)
downloadrtems-libbsd-a5ddb0ea69f21c16b7697a935d7a0c16bb3cffcf.tar.bz2
Update to FreeBSD head 2019-09-24
Git mirror commit 6b0307a0a5184339393f555d5d424190d8a8277a.
Diffstat (limited to 'freebsd/sys/arm/ti/ti_hwmods.c')
-rw-r--r--freebsd/sys/arm/ti/ti_hwmods.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/freebsd/sys/arm/ti/ti_hwmods.c b/freebsd/sys/arm/ti/ti_hwmods.c
index 450679a7..a546d762 100644
--- a/freebsd/sys/arm/ti/ti_hwmods.c
+++ b/freebsd/sys/arm/ti/ti_hwmods.c
@@ -99,6 +99,16 @@ struct hwmod ti_hwmods[] = {
{NULL, 0}
};
+static inline int
+ti_get_hwmods_prop(phandle_t node, void **name)
+{
+ int len;
+
+ if ((len = OF_getprop_alloc(node, "ti,hwmods", name)) > 0)
+ return (len);
+ return (OF_getprop_alloc(OF_parent(node), "ti,hwmods", name));
+}
+
clk_ident_t
ti_hwmods_get_clock(device_t dev)
{
@@ -112,7 +122,7 @@ ti_hwmods_get_clock(device_t dev)
if ((node = ofw_bus_get_node(dev)) == 0)
return (INVALID_CLK_IDENT);
- if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0)
+ if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0)
return (INVALID_CLK_IDENT);
buf = name;
@@ -150,7 +160,7 @@ int ti_hwmods_contains(device_t dev, const char *hwmod)
if ((node = ofw_bus_get_node(dev)) == 0)
return (0);
- if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0)
+ if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0)
return (0);
buf = name;
@@ -184,7 +194,7 @@ ti_hwmods_get_unit(device_t dev, const char *hwmod)
if ((node = ofw_bus_get_node(dev)) == 0)
return (0);
- if ((len = OF_getprop_alloc(node, "ti,hwmods", (void**)&name)) <= 0)
+ if ((len = ti_get_hwmods_prop(node, (void **)&name)) <= 0)
return (0);
buf = name;