diff options
author | Philipp Zabel <p.zabel@pengutronix.de> | 2014-02-06 09:35:21 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-02-19 08:04:38 -0500 |
commit | 5c99a7b1f0dd460140f229b9c5a89e6d5880aa81 (patch) | |
tree | d50f242de48433de464641eb1fde0552f0d60197 | |
parent | b327bcc0accf6003fab7177790f0bcafc7a49618 (diff) |
regulator: da9052: Add ramp speed information for the DVC regulators
Some LDOs and DCDCs have a fixed ramp speed of 6.25 mV/µs. This patch adds
the set_voltage_time_sel function to let consumers know about this.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | drivers/regulator/da9052-regulator.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/regulator/da9052-regulator.c b/drivers/regulator/da9052-regulator.c index 889c7c9b9f15..fdb6ea8ae7e6 100644 --- a/drivers/regulator/da9052-regulator.c +++ b/drivers/regulator/da9052-regulator.c | |||
@@ -240,6 +240,31 @@ static int da9052_regulator_set_voltage_sel(struct regulator_dev *rdev, | |||
240 | return ret; | 240 | return ret; |
241 | } | 241 | } |
242 | 242 | ||
243 | static int da9052_regulator_set_voltage_time_sel(struct regulator_dev *rdev, | ||
244 | unsigned int old_sel, | ||
245 | unsigned int new_sel) | ||
246 | { | ||
247 | struct da9052_regulator *regulator = rdev_get_drvdata(rdev); | ||
248 | struct da9052_regulator_info *info = regulator->info; | ||
249 | int id = rdev_get_id(rdev); | ||
250 | int ret = 0; | ||
251 | |||
252 | /* The DVC controlled LDOs and DCDCs ramp with 6.25mV/µs after enabling | ||
253 | * the activate bit. | ||
254 | */ | ||
255 | switch (id) { | ||
256 | case DA9052_ID_BUCK1: | ||
257 | case DA9052_ID_BUCK2: | ||
258 | case DA9052_ID_BUCK3: | ||
259 | case DA9052_ID_LDO2: | ||
260 | case DA9052_ID_LDO3: | ||
261 | ret = (new_sel - old_sel) * info->step_uV / 6250; | ||
262 | break; | ||
263 | } | ||
264 | |||
265 | return ret; | ||
266 | } | ||
267 | |||
243 | static struct regulator_ops da9052_dcdc_ops = { | 268 | static struct regulator_ops da9052_dcdc_ops = { |
244 | .get_current_limit = da9052_dcdc_get_current_limit, | 269 | .get_current_limit = da9052_dcdc_get_current_limit, |
245 | .set_current_limit = da9052_dcdc_set_current_limit, | 270 | .set_current_limit = da9052_dcdc_set_current_limit, |
@@ -248,6 +273,7 @@ static struct regulator_ops da9052_dcdc_ops = { | |||
248 | .map_voltage = da9052_map_voltage, | 273 | .map_voltage = da9052_map_voltage, |
249 | .get_voltage_sel = regulator_get_voltage_sel_regmap, | 274 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
250 | .set_voltage_sel = da9052_regulator_set_voltage_sel, | 275 | .set_voltage_sel = da9052_regulator_set_voltage_sel, |
276 | .set_voltage_time_sel = da9052_regulator_set_voltage_time_sel, | ||
251 | .is_enabled = regulator_is_enabled_regmap, | 277 | .is_enabled = regulator_is_enabled_regmap, |
252 | .enable = regulator_enable_regmap, | 278 | .enable = regulator_enable_regmap, |
253 | .disable = regulator_disable_regmap, | 279 | .disable = regulator_disable_regmap, |
@@ -258,6 +284,7 @@ static struct regulator_ops da9052_ldo_ops = { | |||
258 | .map_voltage = da9052_map_voltage, | 284 | .map_voltage = da9052_map_voltage, |
259 | .get_voltage_sel = regulator_get_voltage_sel_regmap, | 285 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
260 | .set_voltage_sel = da9052_regulator_set_voltage_sel, | 286 | .set_voltage_sel = da9052_regulator_set_voltage_sel, |
287 | .set_voltage_time_sel = da9052_regulator_set_voltage_time_sel, | ||
261 | .is_enabled = regulator_is_enabled_regmap, | 288 | .is_enabled = regulator_is_enabled_regmap, |
262 | .enable = regulator_enable_regmap, | 289 | .enable = regulator_enable_regmap, |
263 | .disable = regulator_disable_regmap, | 290 | .disable = regulator_disable_regmap, |