aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2016-01-14 10:24:44 -0500
committerPhilipp Zabel <p.zabel@pengutronix.de>2016-01-25 04:58:44 -0500
commite677774f502635c70cb3180fc51ec7ff8c4b27ea (patch)
tree621da84d99220fb2c78d7613b76b8b5bb222efb8
parent203d4f347d86aa9e78342457aa7a3844c4fadd1d (diff)
reset: Move DT cell size check to the core
The core currently doesn't check that the DT cell size matches what the driver declares, which means that every xlate function needs to duplicate that check. Make sure that of_reset_control_get checks for this to avoid duplication and errors. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
-rw-r--r--drivers/reset/core.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 4a63b379361c..f15f150b79da 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -45,9 +45,6 @@ struct reset_control {
45static int of_reset_simple_xlate(struct reset_controller_dev *rcdev, 45static int of_reset_simple_xlate(struct reset_controller_dev *rcdev,
46 const struct of_phandle_args *reset_spec) 46 const struct of_phandle_args *reset_spec)
47{ 47{
48 if (WARN_ON(reset_spec->args_count != rcdev->of_reset_n_cells))
49 return -EINVAL;
50
51 if (reset_spec->args[0] >= rcdev->nr_resets) 48 if (reset_spec->args[0] >= rcdev->nr_resets)
52 return -EINVAL; 49 return -EINVAL;
53 50
@@ -178,6 +175,11 @@ struct reset_control *of_reset_control_get_by_index(struct device_node *node,
178 return ERR_PTR(-EPROBE_DEFER); 175 return ERR_PTR(-EPROBE_DEFER);
179 } 176 }
180 177
178 if (WARN_ON(args.args_count != rcdev->of_reset_n_cells)) {
179 mutex_unlock(&reset_controller_list_mutex);
180 return ERR_PTR(-EINVAL);
181 }
182
181 rstc_id = rcdev->of_xlate(rcdev, &args); 183 rstc_id = rcdev->of_xlate(rcdev, &args);
182 if (rstc_id < 0) { 184 if (rstc_id < 0) {
183 mutex_unlock(&reset_controller_list_mutex); 185 mutex_unlock(&reset_controller_list_mutex);