aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/regulator
diff options
context:
space:
mode:
authorGuodong Xu <guodong.xu@linaro.org>2014-08-13 07:33:40 -0400
committerMark Brown <broonie@linaro.org>2014-08-16 17:55:42 -0400
commit871f565055ed232e5751da18a331b73e8254adaf (patch)
tree8aa03c6a83d1c5a675c64935b213c1c18035e49c /include/linux/regulator
parent79fd114161a764dfa456191af89358b3f5201c87 (diff)
regulator: core: add guard delay between calling regulator_disable and _enable
Some regulator require a minimum delay between its disable and next enable. This is to avoid damages when out-of-range frequent disable/enable of a single regulator can bring to the regulator chip. Add @off_on_delay to struct regulator_desc. Device drivers' can use this field to set this guard time. Add @last_off_jiffy to struct regulator_dev. When @off_on_delay is set by driver, regulator core can store its last off (disable) time into this field. Signed-off-by: Guodong Xu <guodong.xu@linaro.org> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'include/linux/regulator')
-rw-r--r--include/linux/regulator/driver.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index 4b628139a9cb..efe058f8f746 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -238,6 +238,7 @@ enum regulator_type {
238 * @bypass_val_off: Disabling value for control when using regmap set_bypass 238 * @bypass_val_off: Disabling value for control when using regmap set_bypass
239 * 239 *
240 * @enable_time: Time taken for initial enable of regulator (in uS). 240 * @enable_time: Time taken for initial enable of regulator (in uS).
241 * @off_on_delay: guard time (in uS), before re-enabling a regulator
241 */ 242 */
242struct regulator_desc { 243struct regulator_desc {
243 const char *name; 244 const char *name;
@@ -276,6 +277,8 @@ struct regulator_desc {
276 unsigned int bypass_val_off; 277 unsigned int bypass_val_off;
277 278
278 unsigned int enable_time; 279 unsigned int enable_time;
280
281 unsigned int off_on_delay;
279}; 282};
280 283
281/** 284/**
@@ -348,6 +351,9 @@ struct regulator_dev {
348 351
349 struct regulator_enable_gpio *ena_pin; 352 struct regulator_enable_gpio *ena_pin;
350 unsigned int ena_gpio_state:1; 353 unsigned int ena_gpio_state:1;
354
355 /* time when this regulator was disabled last time */
356 unsigned long last_off_jiffy;
351}; 357};
352 358
353struct regulator_dev * 359struct regulator_dev *