diff options
| author | Guodong Xu <guodong.xu@linaro.org> | 2014-08-13 07:33:40 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-08-16 17:55:42 -0400 |
| commit | 871f565055ed232e5751da18a331b73e8254adaf (patch) | |
| tree | 8aa03c6a83d1c5a675c64935b213c1c18035e49c /include/linux/regulator | |
| parent | 79fd114161a764dfa456191af89358b3f5201c87 (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.h | 6 |
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 | */ |
| 242 | struct regulator_desc { | 243 | struct 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 | ||
| 353 | struct regulator_dev * | 359 | struct regulator_dev * |
