diff options
author | Jared McNeill <jmcneill@FreeBSD.org> | 2016-07-10 10:53:50 +0000 |
---|---|---|
committer | Jared McNeill <jmcneill@FreeBSD.org> | 2016-07-10 10:53:50 +0000 |
commit | 0e1cdf8ba68a900a294717d61aca19256ea3e808 (patch) | |
tree | cb921ae709abf46be92cf2def81db09b02480fa0 /sys/dev/extres | |
parent | 22a81821b0bbff05f2eb213199dd35aeddf151bf (diff) | |
download | src-0e1cdf8ba68a900a294717d61aca19256ea3e808.tar.gz src-0e1cdf8ba68a900a294717d61aca19256ea3e808.zip |
Add clk_get_by_ofw_node_index, which is like clk_get_by_ofw_index but
operates on a specific OF node instead of the pass in device's OF node.
Reviewed by: andrew, mmel
Differential Revision: https://reviews.freebsd.org/D6957
Notes
Notes:
svn path=/head/; revision=302523
Diffstat (limited to 'sys/dev/extres')
-rw-r--r-- | sys/dev/extres/clk/clk.c | 22 | ||||
-rw-r--r-- | sys/dev/extres/clk/clk.h | 2 |
2 files changed, 17 insertions, 7 deletions
diff --git a/sys/dev/extres/clk/clk.c b/sys/dev/extres/clk/clk.c index 5b9eeb68636c..092279bddfb3 100644 --- a/sys/dev/extres/clk/clk.c +++ b/sys/dev/extres/clk/clk.c @@ -1198,13 +1198,7 @@ clk_get_by_id(device_t dev, struct clkdom *clkdom, intptr_t id, clk_t *clk) int clk_get_by_ofw_index(device_t dev, int idx, clk_t *clk) { - phandle_t cnode, parent, *cells; - device_t clockdev; - int ncells, rv; - struct clkdom *clkdom; - struct clknode *clknode; - - *clk = NULL; + phandle_t cnode; cnode = ofw_bus_get_node(dev); if (cnode <= 0) { @@ -1213,6 +1207,20 @@ clk_get_by_ofw_index(device_t dev, int idx, clk_t *clk) return (ENXIO); } + return (clk_get_by_ofw_node_index(dev, cnode, idx, clk)); +} + +int +clk_get_by_ofw_node_index(device_t dev, phandle_t cnode, int idx, clk_t *clk) +{ + phandle_t parent, *cells; + device_t clockdev; + int ncells, rv; + struct clkdom *clkdom; + struct clknode *clknode; + + *clk = NULL; + rv = ofw_bus_parse_xref_list_alloc(cnode, "clocks", "#clock-cells", idx, &parent, &ncells, &cells); if (rv != 0) { diff --git a/sys/dev/extres/clk/clk.h b/sys/dev/extres/clk/clk.h index 510f0cef1727..55cec53fc9fd 100644 --- a/sys/dev/extres/clk/clk.h +++ b/sys/dev/extres/clk/clk.h @@ -131,6 +131,8 @@ const char *clk_get_name(clk_t clk); #ifdef FDT int clk_get_by_ofw_index(device_t dev, int idx, clk_t *clk); int clk_get_by_ofw_name(device_t dev, const char *name, clk_t *clk); +int clk_get_by_ofw_node_index(device_t dev, phandle_t node, int idx, + clk_t *clk); int clk_parse_ofw_out_names(device_t dev, phandle_t node, const char ***out_names, uint32_t **indices); int clk_parse_ofw_clk_name(device_t dev, phandle_t node, const char **name); |