diff options
-rw-r--r-- | drivers/regulator/helpers.c | 18 | ||||
-rw-r--r-- | include/linux/regulator/driver.h | 8 |
2 files changed, 26 insertions, 0 deletions
diff --git a/drivers/regulator/helpers.c b/drivers/regulator/helpers.c index 379cdacc05d8..a75e7da49af8 100644 --- a/drivers/regulator/helpers.c +++ b/drivers/regulator/helpers.c | |||
@@ -446,6 +446,24 @@ int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable) | |||
446 | EXPORT_SYMBOL_GPL(regulator_set_bypass_regmap); | 446 | EXPORT_SYMBOL_GPL(regulator_set_bypass_regmap); |
447 | 447 | ||
448 | /** | 448 | /** |
449 | * regulator_set_soft_start_regmap - Default set_soft_start() using regmap | ||
450 | * | ||
451 | * @rdev: device to operate on. | ||
452 | */ | ||
453 | int regulator_set_soft_start_regmap(struct regulator_dev *rdev) | ||
454 | { | ||
455 | unsigned int val; | ||
456 | |||
457 | val = rdev->desc->soft_start_val_on; | ||
458 | if (!val) | ||
459 | val = rdev->desc->soft_start_mask; | ||
460 | |||
461 | return regmap_update_bits(rdev->regmap, rdev->desc->soft_start_reg, | ||
462 | rdev->desc->soft_start_mask, val); | ||
463 | } | ||
464 | EXPORT_SYMBOL_GPL(regulator_set_soft_start_regmap); | ||
465 | |||
466 | /** | ||
449 | * regulator_get_bypass_regmap - Default get_bypass() using regmap | 467 | * regulator_get_bypass_regmap - Default get_bypass() using regmap |
450 | * | 468 | * |
451 | * @rdev: device to operate on. | 469 | * @rdev: device to operate on. |
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h index dac8e7b16bc6..1054c033e783 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h | |||
@@ -292,6 +292,10 @@ enum regulator_type { | |||
292 | * set_active_discharge | 292 | * set_active_discharge |
293 | * @active_discharge_reg: Register for control when using regmap | 293 | * @active_discharge_reg: Register for control when using regmap |
294 | * set_active_discharge | 294 | * set_active_discharge |
295 | * @soft_start_reg: Register for control when using regmap set_soft_start | ||
296 | * @soft_start_mask: Mask for control when using regmap set_soft_start | ||
297 | * @soft_start_val_on: Enabling value for control when using regmap | ||
298 | * set_soft_start | ||
295 | * | 299 | * |
296 | * @enable_time: Time taken for initial enable of regulator (in uS). | 300 | * @enable_time: Time taken for initial enable of regulator (in uS). |
297 | * @off_on_delay: guard time (in uS), before re-enabling a regulator | 301 | * @off_on_delay: guard time (in uS), before re-enabling a regulator |
@@ -345,6 +349,9 @@ struct regulator_desc { | |||
345 | unsigned int active_discharge_off; | 349 | unsigned int active_discharge_off; |
346 | unsigned int active_discharge_mask; | 350 | unsigned int active_discharge_mask; |
347 | unsigned int active_discharge_reg; | 351 | unsigned int active_discharge_reg; |
352 | unsigned int soft_start_reg; | ||
353 | unsigned int soft_start_mask; | ||
354 | unsigned int soft_start_val_on; | ||
348 | 355 | ||
349 | unsigned int enable_time; | 356 | unsigned int enable_time; |
350 | 357 | ||
@@ -476,6 +483,7 @@ int regulator_set_voltage_time_sel(struct regulator_dev *rdev, | |||
476 | unsigned int new_selector); | 483 | unsigned int new_selector); |
477 | int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); | 484 | int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); |
478 | int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); | 485 | int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); |
486 | int regulator_set_soft_start_regmap(struct regulator_dev *rdev); | ||
479 | 487 | ||
480 | int regulator_set_active_discharge_regmap(struct regulator_dev *rdev, | 488 | int regulator_set_active_discharge_regmap(struct regulator_dev *rdev, |
481 | bool enable); | 489 | bool enable); |