aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/helpers.c18
-rw-r--r--include/linux/regulator/driver.h8
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)
446EXPORT_SYMBOL_GPL(regulator_set_bypass_regmap); 446EXPORT_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 */
453int 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}
464EXPORT_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);
477int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); 484int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable);
478int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); 485int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable);
486int regulator_set_soft_start_regmap(struct regulator_dev *rdev);
479 487
480int regulator_set_active_discharge_regmap(struct regulator_dev *rdev, 488int regulator_set_active_discharge_regmap(struct regulator_dev *rdev,
481 bool enable); 489 bool enable);