diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-10-22 11:31:30 -0400 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2009-12-17 05:27:24 -0500 |
commit | af5866c9cdc9e43ef775a14765fd8eab95c7fd20 (patch) | |
tree | a935e1701469b0cee2812b239a6eebfa7650dc1b | |
parent | e79055d62ea6ca3c36962209f4c819614972c95a (diff) |
regulator: Also lift apply_uV into machine_constraints_voltage()
It makes sense to do all the voltage configuration in the one split
out function.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r-- | drivers/regulator/core.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index c1a49917af24..1848a3f0980e 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
@@ -676,6 +676,22 @@ static int machine_constraints_voltage(struct regulator_dev *rdev, | |||
676 | const char *name, struct regulation_constraints *constraints) | 676 | const char *name, struct regulation_constraints *constraints) |
677 | { | 677 | { |
678 | struct regulator_ops *ops = rdev->desc->ops; | 678 | struct regulator_ops *ops = rdev->desc->ops; |
679 | int ret; | ||
680 | |||
681 | /* do we need to apply the constraint voltage */ | ||
682 | if (rdev->constraints->apply_uV && | ||
683 | rdev->constraints->min_uV == rdev->constraints->max_uV && | ||
684 | ops->set_voltage) { | ||
685 | ret = ops->set_voltage(rdev, | ||
686 | rdev->constraints->min_uV, rdev->constraints->max_uV); | ||
687 | if (ret < 0) { | ||
688 | printk(KERN_ERR "%s: failed to apply %duV constraint to %s\n", | ||
689 | __func__, | ||
690 | rdev->constraints->min_uV, name); | ||
691 | rdev->constraints = NULL; | ||
692 | return ret; | ||
693 | } | ||
694 | } | ||
679 | 695 | ||
680 | /* constrain machine-level voltage specs to fit | 696 | /* constrain machine-level voltage specs to fit |
681 | * the actual range supported by this regulator. | 697 | * the actual range supported by this regulator. |
@@ -773,27 +789,12 @@ static int set_machine_constraints(struct regulator_dev *rdev, | |||
773 | else | 789 | else |
774 | name = "regulator"; | 790 | name = "regulator"; |
775 | 791 | ||
792 | rdev->constraints = constraints; | ||
793 | |||
776 | ret = machine_constraints_voltage(rdev, name, constraints); | 794 | ret = machine_constraints_voltage(rdev, name, constraints); |
777 | if (ret != 0) | 795 | if (ret != 0) |
778 | goto out; | 796 | goto out; |
779 | 797 | ||
780 | rdev->constraints = constraints; | ||
781 | |||
782 | /* do we need to apply the constraint voltage */ | ||
783 | if (rdev->constraints->apply_uV && | ||
784 | rdev->constraints->min_uV == rdev->constraints->max_uV && | ||
785 | ops->set_voltage) { | ||
786 | ret = ops->set_voltage(rdev, | ||
787 | rdev->constraints->min_uV, rdev->constraints->max_uV); | ||
788 | if (ret < 0) { | ||
789 | printk(KERN_ERR "%s: failed to apply %duV constraint to %s\n", | ||
790 | __func__, | ||
791 | rdev->constraints->min_uV, name); | ||
792 | rdev->constraints = NULL; | ||
793 | goto out; | ||
794 | } | ||
795 | } | ||
796 | |||
797 | /* do we need to setup our suspend state */ | 798 | /* do we need to setup our suspend state */ |
798 | if (constraints->initial_state) { | 799 | if (constraints->initial_state) { |
799 | ret = suspend_prepare(rdev, constraints->initial_state); | 800 | ret = suspend_prepare(rdev, constraints->initial_state); |