aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/extres
diff options
context:
space:
mode:
authorJared McNeill <jmcneill@FreeBSD.org>2016-07-10 10:53:50 +0000
committerJared McNeill <jmcneill@FreeBSD.org>2016-07-10 10:53:50 +0000
commit0e1cdf8ba68a900a294717d61aca19256ea3e808 (patch)
treecb921ae709abf46be92cf2def81db09b02480fa0 /sys/dev/extres
parent22a81821b0bbff05f2eb213199dd35aeddf151bf (diff)
downloadsrc-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.c22
-rw-r--r--sys/dev/extres/clk/clk.h2
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);