]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/regulator/max8660.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 / max8660.c
index c570e6eb0db2c5ab5e4d86776e7063e6a10c9179..33f5d9a492efa809b3177ce1034bef633c32c037 100644 (file)
@@ -141,7 +141,8 @@ static int max8660_dcdc_get(struct regulator_dev *rdev)
        return MAX8660_DCDC_MIN_UV + selector * MAX8660_DCDC_STEP;
 }
 
-static int max8660_dcdc_set(struct regulator_dev *rdev, int min_uV, int max_uV)
+static int max8660_dcdc_set(struct regulator_dev *rdev, int min_uV, int max_uV,
+                           unsigned int *s)
 {
        struct max8660 *max8660 = rdev_get_drvdata(rdev);
        u8 reg, selector, bits;
@@ -154,6 +155,7 @@ static int max8660_dcdc_set(struct regulator_dev *rdev, int min_uV, int max_uV)
 
        selector = (min_uV - (MAX8660_DCDC_MIN_UV - MAX8660_DCDC_STEP + 1))
                        / MAX8660_DCDC_STEP;
+       *s = selector;
 
        ret = max8660_dcdc_list(rdev, selector);
        if (ret < 0 || ret > max_uV)
@@ -196,7 +198,8 @@ static int max8660_ldo5_get(struct regulator_dev *rdev)
        return MAX8660_LDO5_MIN_UV + selector * MAX8660_LDO5_STEP;
 }
 
-static int max8660_ldo5_set(struct regulator_dev *rdev, int min_uV, int max_uV)
+static int max8660_ldo5_set(struct regulator_dev *rdev, int min_uV, int max_uV,
+                           unsigned int *s)
 {
        struct max8660 *max8660 = rdev_get_drvdata(rdev);
        u8 selector;
@@ -213,6 +216,8 @@ static int max8660_ldo5_set(struct regulator_dev *rdev, int min_uV, int max_uV)
        if (ret < 0 || ret > max_uV)
                return -EINVAL;
 
+       *s = selector;
+
        ret = max8660_write(max8660, MAX8660_MDTV2, 0, selector);
        if (ret)
                return ret;
@@ -270,7 +275,8 @@ static int max8660_ldo67_get(struct regulator_dev *rdev)
        return MAX8660_LDO67_MIN_UV + selector * MAX8660_LDO67_STEP;
 }
 
-static int max8660_ldo67_set(struct regulator_dev *rdev, int min_uV, int max_uV)
+static int max8660_ldo67_set(struct regulator_dev *rdev, int min_uV,
+                            int max_uV, unsigned int *s)
 {
        struct max8660 *max8660 = rdev_get_drvdata(rdev);
        u8 selector;
@@ -288,6 +294,8 @@ static int max8660_ldo67_set(struct regulator_dev *rdev, int min_uV, int max_uV)
        if (ret < 0 || ret > max_uV)
                return -EINVAL;
 
+       *s = selector;
+
        if (rdev_get_id(rdev) == MAX8660_V6)
                return max8660_write(max8660, MAX8660_L12VCR, 0xf0, selector);
        else