lkml.org 
[lkml]   [2010]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] regulator: enable supply regulator only when use count is zero
    Date
    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 <bengt.g.jonsson@stericsson.com>
    Acked-by: Linus Walleij <linus.walleij@stericsson.com>
    ---
    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


    \
     
     \ /
      Last update: 2010-11-10 11:11    [W:0.026 / U:0.556 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site