aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-10-22 11:31:30 -0400
committerLiam Girdwood <lrg@slimlogic.co.uk>2009-12-17 05:27:24 -0500
commitaf5866c9cdc9e43ef775a14765fd8eab95c7fd20 (patch)
treea935e1701469b0cee2812b239a6eebfa7650dc1b
parente79055d62ea6ca3c36962209f4c819614972c95a (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.c35
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);