From f58fa7906dbed75e69c944ad9ca9732c5dd0d9ee Mon Sep 17 00:00:00 2001 From: Sundar R Iyer Date: Mon, 17 May 2010 21:24:48 +0530 Subject: [PATCH] --- yaml --- r: 198388 b: refs/heads/master c: 500b4ac90d1103a7c302d5bb16c53f4ffc45d057 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/regulator/core.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b6aa56625a39..cc1c8ca84ba2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 64714354a45a58a072cfc926db0a078611a63d43 +refs/heads/master: 500b4ac90d1103a7c302d5bb16c53f4ffc45d057 diff --git a/trunk/drivers/regulator/core.c b/trunk/drivers/regulator/core.c index 98e5d14f94f3..2248087b9be2 100644 --- a/trunk/drivers/regulator/core.c +++ b/trunk/drivers/regulator/core.c @@ -1745,6 +1745,7 @@ int regulator_set_mode(struct regulator *regulator, unsigned int mode) { struct regulator_dev *rdev = regulator->rdev; int ret; + int regulator_curr_mode; mutex_lock(&rdev->mutex); @@ -1754,6 +1755,15 @@ int regulator_set_mode(struct regulator *regulator, unsigned int mode) goto out; } + /* return if the same mode is requested */ + if (rdev->desc->ops->get_mode) { + regulator_curr_mode = rdev->desc->ops->get_mode(rdev); + if (regulator_curr_mode == mode) { + ret = 0; + goto out; + } + } + /* constraints check */ ret = regulator_check_mode(rdev, mode); if (ret < 0)