aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/extres/hwreset
diff options
context:
space:
mode:
authorMichal Meloun <mmel@FreeBSD.org>2016-07-10 18:28:15 +0000
committerMichal Meloun <mmel@FreeBSD.org>2016-07-10 18:28:15 +0000
commitdac935533b354a9be9167013e999d128bfc8392b (patch)
tree8b7ffcc52987f5e05c0f5384d9d04ebc168605bd /sys/dev/extres/hwreset
parent5fa69ff0151ee425246714f9a7805caf0690af3a (diff)
downloadsrc-dac935533b354a9be9167013e999d128bfc8392b.tar.gz
src-dac935533b354a9be9167013e999d128bfc8392b.zip
EXTRES: Add OF node as argument to all <foo>_get_by_ofw_<bar>() functions.
In some cases, the driver must handle given properties located in specific OF subnode. Instead of creating duplicate set of function, add 'node' as argument to existing functions, defaulting it to device OF node. MFC after: 3 weeks
Notes
Notes: svn path=/head/; revision=302528
Diffstat (limited to 'sys/dev/extres/hwreset')
-rw-r--r--sys/dev/extres/hwreset/hwreset.c17
-rw-r--r--sys/dev/extres/hwreset/hwreset.h6
2 files changed, 14 insertions, 9 deletions
diff --git a/sys/dev/extres/hwreset/hwreset.c b/sys/dev/extres/hwreset/hwreset.c
index 8623b60e5b23..40ee915e3aac 100644
--- a/sys/dev/extres/hwreset/hwreset.c
+++ b/sys/dev/extres/hwreset/hwreset.c
@@ -109,15 +109,17 @@ hwreset_default_ofw_map(device_t provider_dev, phandle_t xref, int ncells,
}
int
-hwreset_get_by_ofw_idx(device_t consumer_dev, int idx, hwreset_t *rst)
+hwreset_get_by_ofw_idx(device_t consumer_dev, phandle_t cnode, int idx,
+ hwreset_t *rst)
{
- phandle_t cnode, xnode;
+ phandle_t xnode;
pcell_t *cells;
device_t rstdev;
int ncells, rv;
intptr_t id;
- cnode = ofw_bus_get_node(consumer_dev);
+ if (cnode <= 0)
+ cnode = ofw_bus_get_node(consumer_dev);
if (cnode <= 0) {
device_printf(consumer_dev,
"%s called on not ofw based device\n", __func__);
@@ -145,12 +147,13 @@ hwreset_get_by_ofw_idx(device_t consumer_dev, int idx, hwreset_t *rst)
}
int
-hwreset_get_by_ofw_name(device_t consumer_dev, char *name, hwreset_t *rst)
+hwreset_get_by_ofw_name(device_t consumer_dev, phandle_t cnode, char *name,
+ hwreset_t *rst)
{
int rv, idx;
- phandle_t cnode;
- cnode = ofw_bus_get_node(consumer_dev);
+ if (cnode <= 0)
+ cnode = ofw_bus_get_node(consumer_dev);
if (cnode <= 0) {
device_printf(consumer_dev,
"%s called on not ofw based device\n", __func__);
@@ -159,7 +162,7 @@ hwreset_get_by_ofw_name(device_t consumer_dev, char *name, hwreset_t *rst)
rv = ofw_bus_find_string_index(cnode, "reset-names", name, &idx);
if (rv != 0)
return (rv);
- return (hwreset_get_by_ofw_idx(consumer_dev, idx, rst));
+ return (hwreset_get_by_ofw_idx(consumer_dev, cnode, idx, rst));
}
void
diff --git a/sys/dev/extres/hwreset/hwreset.h b/sys/dev/extres/hwreset/hwreset.h
index 75e653a5c2ae..6366351cc4cc 100644
--- a/sys/dev/extres/hwreset/hwreset.h
+++ b/sys/dev/extres/hwreset/hwreset.h
@@ -58,8 +58,10 @@ int hwreset_deassert(hwreset_t rst);
int hwreset_is_asserted(hwreset_t rst, bool *value);
#ifdef FDT
-int hwreset_get_by_ofw_name(device_t consumer_dev, char *name, hwreset_t *rst);
-int hwreset_get_by_ofw_idx(device_t consumer_dev, int idx, hwreset_t *rst);
+int hwreset_get_by_ofw_name(device_t consumer_dev, phandle_t node, char *name,
+ hwreset_t *rst);
+int hwreset_get_by_ofw_idx(device_t consumer_dev, phandle_t node, int idx,
+ hwreset_t *rst);
#endif