diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-05-16 01:12:35 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-16 04:48:57 -0400 |
commit | 4923b48b27fc89710ebc8b77fe0dd679724c0ffc (patch) | |
tree | 70a4a9fd5f23d44f567aa9b6588afd302c937744 /drivers/regulator/da9052-regulator.c | |
parent | 372de4aa5e27af81ac4ce3b7be264e36a1d70a01 (diff) |
regulator: da9052: Convert to set_voltage_sel and map_voltage
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/da9052-regulator.c')
-rw-r--r-- | drivers/regulator/da9052-regulator.c | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/drivers/regulator/da9052-regulator.c b/drivers/regulator/da9052-regulator.c index d2de7fc98080..88976d8d44ed 100644 --- a/drivers/regulator/da9052-regulator.c +++ b/drivers/regulator/da9052-regulator.c | |||
@@ -179,14 +179,13 @@ static int da9052_list_voltage(struct regulator_dev *rdev, | |||
179 | return volt_uV; | 179 | return volt_uV; |
180 | } | 180 | } |
181 | 181 | ||
182 | static int da9052_regulator_set_voltage(struct regulator_dev *rdev, | 182 | static int da9052_map_voltage(struct regulator_dev *rdev, |
183 | int min_uV, int max_uV, | 183 | int min_uV, int max_uV) |
184 | unsigned int *selector) | ||
185 | { | 184 | { |
186 | struct da9052_regulator *regulator = rdev_get_drvdata(rdev); | 185 | struct da9052_regulator *regulator = rdev_get_drvdata(rdev); |
187 | struct da9052_regulator_info *info = regulator->info; | 186 | struct da9052_regulator_info *info = regulator->info; |
188 | int id = rdev_get_id(rdev); | 187 | int id = rdev_get_id(rdev); |
189 | int ret; | 188 | int ret, sel; |
190 | 189 | ||
191 | ret = verify_range(info, min_uV, max_uV); | 190 | ret = verify_range(info, min_uV, max_uV); |
192 | if (ret < 0) | 191 | if (ret < 0) |
@@ -197,19 +196,30 @@ static int da9052_regulator_set_voltage(struct regulator_dev *rdev, | |||
197 | 196 | ||
198 | if ((id == DA9052_ID_BUCK4) && (regulator->da9052->chip_id == DA9052) | 197 | if ((id == DA9052_ID_BUCK4) && (regulator->da9052->chip_id == DA9052) |
199 | && (min_uV >= DA9052_CONST_3uV)) { | 198 | && (min_uV >= DA9052_CONST_3uV)) { |
200 | *selector = DA9052_BUCK_PERI_REG_MAP_UPTO_3uV + | 199 | sel = DA9052_BUCK_PERI_REG_MAP_UPTO_3uV + |
201 | DIV_ROUND_UP(min_uV - DA9052_CONST_3uV, | 200 | DIV_ROUND_UP(min_uV - DA9052_CONST_3uV, |
202 | DA9052_BUCK_PERI_3uV_STEP); | 201 | DA9052_BUCK_PERI_3uV_STEP); |
203 | } else { | 202 | } else { |
204 | *selector = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV); | 203 | sel = DIV_ROUND_UP(min_uV - info->min_uV, info->step_uV); |
205 | } | 204 | } |
206 | 205 | ||
207 | ret = da9052_list_voltage(rdev, *selector); | 206 | ret = da9052_list_voltage(rdev, sel); |
208 | if (ret < 0) | 207 | if (ret < 0) |
209 | return ret; | 208 | return ret; |
210 | 209 | ||
210 | return sel; | ||
211 | } | ||
212 | |||
213 | static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev, | ||
214 | unsigned int selector) | ||
215 | { | ||
216 | struct da9052_regulator *regulator = rdev_get_drvdata(rdev); | ||
217 | struct da9052_regulator_info *info = regulator->info; | ||
218 | int id = rdev_get_id(rdev); | ||
219 | int ret; | ||
220 | |||
211 | ret = da9052_reg_update(regulator->da9052, rdev->desc->vsel_reg, | 221 | ret = da9052_reg_update(regulator->da9052, rdev->desc->vsel_reg, |
212 | rdev->desc->vsel_mask, *selector); | 222 | rdev->desc->vsel_mask, selector); |
213 | if (ret < 0) | 223 | if (ret < 0) |
214 | return ret; | 224 | return ret; |
215 | 225 | ||
@@ -231,22 +241,23 @@ static int da9052_regulator_set_voltage(struct regulator_dev *rdev, | |||
231 | } | 241 | } |
232 | 242 | ||
233 | static struct regulator_ops da9052_dcdc_ops = { | 243 | static struct regulator_ops da9052_dcdc_ops = { |
234 | .set_voltage = da9052_regulator_set_voltage, | ||
235 | .get_current_limit = da9052_dcdc_get_current_limit, | 244 | .get_current_limit = da9052_dcdc_get_current_limit, |
236 | .set_current_limit = da9052_dcdc_set_current_limit, | 245 | .set_current_limit = da9052_dcdc_set_current_limit, |
237 | 246 | ||
238 | .list_voltage = da9052_list_voltage, | 247 | .list_voltage = da9052_list_voltage, |
248 | .map_voltage = da9052_map_voltage, | ||
239 | .get_voltage_sel = regulator_get_voltage_sel_regmap, | 249 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
250 | .set_voltage_sel = da9052_regulator_set_voltage_sel, | ||
240 | .is_enabled = regulator_is_enabled_regmap, | 251 | .is_enabled = regulator_is_enabled_regmap, |
241 | .enable = regulator_enable_regmap, | 252 | .enable = regulator_enable_regmap, |
242 | .disable = regulator_disable_regmap, | 253 | .disable = regulator_disable_regmap, |
243 | }; | 254 | }; |
244 | 255 | ||
245 | static struct regulator_ops da9052_ldo_ops = { | 256 | static struct regulator_ops da9052_ldo_ops = { |
246 | .set_voltage = da9052_regulator_set_voltage, | ||
247 | |||
248 | .list_voltage = da9052_list_voltage, | 257 | .list_voltage = da9052_list_voltage, |
258 | .map_voltage = da9052_map_voltage, | ||
249 | .get_voltage_sel = regulator_get_voltage_sel_regmap, | 259 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
260 | .set_voltage_sel = da9052_regulator_set_voltage_sel, | ||
250 | .is_enabled = regulator_is_enabled_regmap, | 261 | .is_enabled = regulator_is_enabled_regmap, |
251 | .enable = regulator_enable_regmap, | 262 | .enable = regulator_enable_regmap, |
252 | .disable = regulator_disable_regmap, | 263 | .disable = regulator_disable_regmap, |