diff options
author | Axel Lin <axel.lin@ingics.com> | 2012-11-23 11:50:52 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-11-27 15:25:13 -0500 |
commit | 16ed9f0701d2bb06d96754ba1d3edbf9aa5faeef (patch) | |
tree | b8acb3ed4d4022407cab4b12ccd5170855ed8d61 /drivers/regulator/as3711-regulator.c | |
parent | f1e64f90269c197a0619535917210543c0112fcc (diff) |
regulator: as3711: Fix valid min_uV/max_UV checking in as3711_bound_check
Below cases are supposed to be valid:
min_uV == max_uV == info->max_uV
min_uV == max_uV == rdev->desc->min_uV
Don't return -EINVAL for above cases.
This patch also includes below cleanups:
- Use rdev_get_drvdata(rdev) instead of rdev->reg_data.
- Remove unnecessary WARN_ON, it looks pointless.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/as3711-regulator.c')
-rw-r--r-- | drivers/regulator/as3711-regulator.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/regulator/as3711-regulator.c b/drivers/regulator/as3711-regulator.c index 81578bf7e352..5e813b9059e7 100644 --- a/drivers/regulator/as3711-regulator.c +++ b/drivers/regulator/as3711-regulator.c | |||
@@ -69,17 +69,14 @@ static int as3711_list_voltage_dldo(struct regulator_dev *rdev, | |||
69 | static int as3711_bound_check(struct regulator_dev *rdev, | 69 | static int as3711_bound_check(struct regulator_dev *rdev, |
70 | int *min_uV, int *max_uV) | 70 | int *min_uV, int *max_uV) |
71 | { | 71 | { |
72 | struct as3711_regulator_info *info = container_of(rdev->desc, | 72 | struct as3711_regulator *reg = rdev_get_drvdata(rdev); |
73 | struct as3711_regulator_info, desc); | 73 | struct as3711_regulator_info *info = reg->reg_info; |
74 | struct as3711_regulator *reg = rdev->reg_data; | ||
75 | |||
76 | WARN_ON(reg->reg_info != info); | ||
77 | 74 | ||
78 | dev_dbg(&rdev->dev, "%s(), %d, %d, %d\n", __func__, | 75 | dev_dbg(&rdev->dev, "%s(), %d, %d, %d\n", __func__, |
79 | *min_uV, rdev->desc->min_uV, info->max_uV); | 76 | *min_uV, rdev->desc->min_uV, info->max_uV); |
80 | 77 | ||
81 | if (*max_uV < *min_uV || | 78 | if (*max_uV < *min_uV || |
82 | *min_uV >= info->max_uV || rdev->desc->min_uV >= *max_uV) | 79 | *min_uV > info->max_uV || rdev->desc->min_uV > *max_uV) |
83 | return -EINVAL; | 80 | return -EINVAL; |
84 | 81 | ||
85 | if (rdev->desc->n_voltages == 1) | 82 | if (rdev->desc->n_voltages == 1) |