2010-11-10 10:07:40

by Bengt Jönsson

[permalink] [raw]
Subject: [PATCH] regulator: enable supply regulator only when use count is zero

Supply regulators are disabled only when the last
reference count is removed on the child regulator
(the use count goes from 1 to 0). This patch changes
the behaviour of enable so the supply regulator is
enabled only when the use count of the child
regulator goes from 0 to 1.

Signed-off-by: Bengt Jonsson <[email protected]>
Acked-by: Linus Walleij <[email protected]>
---
drivers/regulator/core.c | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 27d062e..c577c6d 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1267,15 +1267,17 @@ static int _regulator_enable(struct regulator_dev *rdev)
{
int ret, delay;

- /* do we need to enable the supply regulator first */
- if (rdev->supply) {
- mutex_lock(&rdev->supply->mutex);
- ret = _regulator_enable(rdev->supply);
- mutex_unlock(&rdev->supply->mutex);
- if (ret < 0) {
- printk(KERN_ERR "%s: failed to enable %s: %d\n",
- __func__, rdev_get_name(rdev), ret);
- return ret;
+ if (rdev->use_count == 0) {
+ /* do we need to enable the supply regulator first */
+ if (rdev->supply) {
+ mutex_lock(&rdev->supply->mutex);
+ ret = _regulator_enable(rdev->supply);
+ mutex_unlock(&rdev->supply->mutex);
+ if (ret < 0) {
+ printk(KERN_ERR "%s: failed to enable %s: %d\n",
+ __func__, rdev_get_name(rdev), ret);
+ return ret;
+ }
}
}

--
1.7.2.2


2010-11-10 16:37:35

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] regulator: enable supply regulator only when use count is zero

On Wed, Nov 10, 2010 at 11:06:22AM +0100, Bengt Jonsson wrote:
> Supply regulators are disabled only when the last
> reference count is removed on the child regulator
> (the use count goes from 1 to 0). This patch changes
> the behaviour of enable so the supply regulator is
> enabled only when the use count of the child
> regulator goes from 0 to 1.

Acked-by: Mark Brown <[email protected]>

> + if (rdev->use_count == 0) {
> + /* do we need to enable the supply regulator first */
> + if (rdev->supply) {

This'd be a bit neater (and less invasive) as a single if statement with
&&.

2010-11-10 21:19:52

by Liam Girdwood

[permalink] [raw]
Subject: Re: [PATCH] regulator: enable supply regulator only when use count is zero

On Wed, 2010-11-10 at 11:06 +0100, Bengt Jonsson wrote:
> Supply regulators are disabled only when the last
> reference count is removed on the child regulator
> (the use count goes from 1 to 0). This patch changes
> the behaviour of enable so the supply regulator is
> enabled only when the use count of the child
> regulator goes from 0 to 1.
>
> Signed-off-by: Bengt Jonsson <[email protected]>
> Acked-by: Linus Walleij <[email protected]>

Applied.

Thanks

Liam
--
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk