|
@@ -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)
|