diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-03-02 11:32:46 -0500 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2009-03-31 04:56:27 -0400 |
commit | cacf90f24e80cec9334f98e0377149f943fe9f16 (patch) | |
tree | b492ea92394f9ba2accffa478bdadc50008998fb /drivers/regulator | |
parent | 221a7c7c9c88bf9d3ea4e191b35c7da709ca30b7 (diff) |
regulator: Allow boot_on regulators to be disabled by clients
Rather than incrementing the reference count for boot_on regulators
(which prevents them being disabled later on) simply force the
regulator to be enabled when applying the constraints. Previously
boot_on was essentially equivalent to always_on.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/core.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 2ff76349f392..08441e24946e 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
@@ -776,10 +776,6 @@ static int set_machine_constraints(struct regulator_dev *rdev, | |||
776 | } | 776 | } |
777 | } | 777 | } |
778 | 778 | ||
779 | /* are we enabled at boot time by firmware / bootloader */ | ||
780 | if (rdev->constraints->boot_on) | ||
781 | rdev->use_count = 1; | ||
782 | |||
783 | /* do we need to setup our suspend state */ | 779 | /* do we need to setup our suspend state */ |
784 | if (constraints->initial_state) { | 780 | if (constraints->initial_state) { |
785 | ret = suspend_prepare(rdev, constraints->initial_state); | 781 | ret = suspend_prepare(rdev, constraints->initial_state); |
@@ -808,11 +804,10 @@ static int set_machine_constraints(struct regulator_dev *rdev, | |||
808 | } | 804 | } |
809 | } | 805 | } |
810 | 806 | ||
811 | /* if always_on is set then turn the regulator on if it's not | 807 | /* If the constraints say the regulator should be on at this point |
812 | * already on. */ | 808 | * and we have control then make sure it is enabled. |
813 | if (constraints->always_on && ops->enable && | 809 | */ |
814 | ((ops->is_enabled && !ops->is_enabled(rdev)) || | 810 | if ((constraints->always_on || constraints->boot_on) && ops->enable) { |
815 | (!ops->is_enabled && !constraints->boot_on))) { | ||
816 | ret = ops->enable(rdev); | 811 | ret = ops->enable(rdev); |
817 | if (ret < 0) { | 812 | if (ret < 0) { |
818 | printk(KERN_ERR "%s: failed to enable %s\n", | 813 | printk(KERN_ERR "%s: failed to enable %s\n", |