Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: helpers: Add regmap set_pull_down helper

Add a helper function regulator_set_pull_down_regmap to allow regmap
based regulators to easily enable pull down.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Charles Keepax and committed by
Mark Brown
f7d37bc3 a7a453f5

+26
+18
drivers/regulator/helpers.c
··· 464 464 EXPORT_SYMBOL_GPL(regulator_set_soft_start_regmap); 465 465 466 466 /** 467 + * regulator_set_pull_down_regmap - Default set_pull_down() using regmap 468 + * 469 + * @rdev: device to operate on. 470 + */ 471 + int regulator_set_pull_down_regmap(struct regulator_dev *rdev) 472 + { 473 + unsigned int val; 474 + 475 + val = rdev->desc->pull_down_val_on; 476 + if (!val) 477 + val = rdev->desc->pull_down_mask; 478 + 479 + return regmap_update_bits(rdev->regmap, rdev->desc->pull_down_reg, 480 + rdev->desc->pull_down_mask, val); 481 + } 482 + EXPORT_SYMBOL_GPL(regulator_set_pull_down_regmap); 483 + 484 + /** 467 485 * regulator_get_bypass_regmap - Default get_bypass() using regmap 468 486 * 469 487 * @rdev: device to operate on.
+8
include/linux/regulator/driver.h
··· 296 296 * @soft_start_mask: Mask for control when using regmap set_soft_start 297 297 * @soft_start_val_on: Enabling value for control when using regmap 298 298 * set_soft_start 299 + * @pull_down_reg: Register for control when using regmap set_pull_down 300 + * @pull_down_mask: Mask for control when using regmap set_pull_down 301 + * @pull_down_val_on: Enabling value for control when using regmap 302 + * set_pull_down 299 303 * 300 304 * @enable_time: Time taken for initial enable of regulator (in uS). 301 305 * @off_on_delay: guard time (in uS), before re-enabling a regulator ··· 356 352 unsigned int soft_start_reg; 357 353 unsigned int soft_start_mask; 358 354 unsigned int soft_start_val_on; 355 + unsigned int pull_down_reg; 356 + unsigned int pull_down_mask; 357 + unsigned int pull_down_val_on; 359 358 360 359 unsigned int enable_time; 361 360 ··· 491 484 int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); 492 485 int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); 493 486 int regulator_set_soft_start_regmap(struct regulator_dev *rdev); 487 + int regulator_set_pull_down_regmap(struct regulator_dev *rdev); 494 488 495 489 int regulator_set_active_discharge_regmap(struct regulator_dev *rdev, 496 490 bool enable);