]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/regulator/twl-regulator.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / regulator / twl-regulator.c
index a57262a4fa6c7a00e8aeb63f9a512ce0f83583b1..bd332cf1cc3f9fc390f637457c16763cca30d19c 100644 (file)
@@ -329,7 +329,8 @@ static int twl4030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
 }
 
 static int
-twl4030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
+twl4030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV,
+                      unsigned *selector)
 {
        struct twlreg_info      *info = rdev_get_drvdata(rdev);
        int                     vsel;
@@ -345,9 +346,11 @@ twl4030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
                /* REVISIT for VAUX2, first match may not be best/lowest */
 
                /* use the first in-range value */
-               if (min_uV <= uV && uV <= max_uV)
+               if (min_uV <= uV && uV <= max_uV) {
+                       *selector = vsel;
                        return twlreg_write(info, TWL_MODULE_PM_RECEIVER,
                                                        VREG_VOLTAGE, vsel);
+               }
        }
 
        return -EDOM;
@@ -389,7 +392,8 @@ static int twl6030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
 }
 
 static int
-twl6030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
+twl6030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV,
+                      unsigned *selector)
 {
        struct twlreg_info      *info = rdev_get_drvdata(rdev);
        int                     vsel;
@@ -402,6 +406,7 @@ twl6030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
         * mV = 1000mv + 100mv * (vsel - 1)
         */
        vsel = (min_uV/1000 - 1000)/100 + 1;
+       *selector = vsel;
        return twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_VOLTAGE, vsel);
 
 }