regulator: return set_mode is same mode is requested
[pandora-kernel.git] / drivers / regulator / core.c
index 98e5d14..2248087 100644 (file)
@@ -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)