summaryrefslogtreecommitdiffstats
path: root/drivers/reset
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2015-10-26 06:56:09 -0400
committerPhilipp Zabel <p.zabel@pengutronix.de>2015-11-16 03:23:47 -0500
commit9a4cc897fd8459b1cc04d90ca19e36aff38ba506 (patch)
tree1e2f1f7cb900870bfe088895a0051519423c4aff /drivers/reset
parent1a539387b715d118e87797bdafa9298b130353dc (diff)
reset: sti: Provide ops .status() call-back
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Diffstat (limited to 'drivers/reset')
-rw-r--r--drivers/reset/sti/reset-syscfg.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/reset/sti/reset-syscfg.c b/drivers/reset/sti/reset-syscfg.c
index a145cc066d4a..a78e09c7825e 100644
--- a/drivers/reset/sti/reset-syscfg.c
+++ b/drivers/reset/sti/reset-syscfg.c
@@ -110,10 +110,33 @@ static int syscfg_reset_dev(struct reset_controller_dev *rcdev,
110 return syscfg_reset_deassert(rcdev, idx); 110 return syscfg_reset_deassert(rcdev, idx);
111} 111}
112 112
113static int syscfg_reset_status(struct reset_controller_dev *rcdev,
114 unsigned long idx)
115{
116 struct syscfg_reset_controller *rst = to_syscfg_reset_controller(rcdev);
117 const struct syscfg_reset_channel *ch;
118 u32 ret_val = 0;
119 int err;
120
121 if (idx >= rcdev->nr_resets)
122 return -EINVAL;
123
124 ch = &rst->channels[idx];
125 if (ch->ack)
126 err = regmap_field_read(ch->ack, &ret_val);
127 else
128 err = regmap_field_read(ch->reset, &ret_val);
129 if (err)
130 return err;
131
132 return rst->active_low ? !ret_val : !!ret_val;
133}
134
113static struct reset_control_ops syscfg_reset_ops = { 135static struct reset_control_ops syscfg_reset_ops = {
114 .reset = syscfg_reset_dev, 136 .reset = syscfg_reset_dev,
115 .assert = syscfg_reset_assert, 137 .assert = syscfg_reset_assert,
116 .deassert = syscfg_reset_deassert, 138 .deassert = syscfg_reset_deassert,
139 .status = syscfg_reset_status,
117}; 140};
118 141
119static int syscfg_reset_controller_register(struct device *dev, 142static int syscfg_reset_controller_register(struct device *dev,