diff options
author | Lee Jones <lee.jones@linaro.org> | 2015-10-26 06:56:09 -0400 |
---|---|---|
committer | Philipp Zabel <p.zabel@pengutronix.de> | 2015-11-16 03:23:47 -0500 |
commit | 9a4cc897fd8459b1cc04d90ca19e36aff38ba506 (patch) | |
tree | 1e2f1f7cb900870bfe088895a0051519423c4aff /drivers/reset | |
parent | 1a539387b715d118e87797bdafa9298b130353dc (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.c | 23 |
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 | ||
113 | static 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 | |||
113 | static struct reset_control_ops syscfg_reset_ops = { | 135 | static 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 | ||
119 | static int syscfg_reset_controller_register(struct device *dev, | 142 | static int syscfg_reset_controller_register(struct device *dev, |