]> git.karo-electronics.de Git - linux-beck.git/commitdiff
regulator: Convert 88pm8607 to set_voltage_sel
authorAxel Lin <axel.lin@gmail.com>
Wed, 28 Mar 2012 07:00:36 +0000 (15:00 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 1 Apr 2012 10:59:39 +0000 (11:59 +0100)
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Tested-by: Jett Zhou <jtzhou@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/88pm8607.c

index 81b6659091711bb1ec0ad55fda8c5d355dea3394..7fafff23ec43d4807df84e33909d47b88083b372 100644 (file)
@@ -223,51 +223,16 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index)
        return ret;
 }
 
-static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV)
-{
-       struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
-       int i, ret = -ENOENT;
-
-       if (info->slope_double) {
-               min_uV = min_uV >> 1;
-               max_uV = max_uV >> 1;
-       }
-       if (info->vol_table) {
-               for (i = 0; i < rdev->desc->n_voltages; i++) {
-                       if (!info->vol_table[i])
-                               break;
-                       if ((min_uV <= info->vol_table[i])
-                               && (max_uV >= info->vol_table[i])) {
-                               ret = i;
-                               break;
-                       }
-               }
-       }
-       if (ret < 0)
-               pr_err("invalid voltage range (%d %d) uV\n", min_uV, max_uV);
-       return ret;
-}
-
-static int pm8607_set_voltage(struct regulator_dev *rdev,
-                             int min_uV, int max_uV, unsigned *selector)
+static int pm8607_set_voltage_sel(struct regulator_dev *rdev, unsigned selector)
 {
        struct pm8607_regulator_info *info = rdev_get_drvdata(rdev);
        uint8_t val, mask;
        int ret;
 
-       if (min_uV > max_uV) {
-               pr_err("invalid voltage range (%d, %d) uV\n", min_uV, max_uV);
-               return -EINVAL;
-       }
-
-       ret = choose_voltage(rdev, min_uV, max_uV);
-       if (ret < 0)
-               return -EINVAL;
-       *selector = ret;
-       val = (uint8_t)(ret << info->vol_shift);
+       val = (uint8_t)(selector << info->vol_shift);
        mask = (rdev->desc->n_voltages - 1)  << info->vol_shift;
 
-       ret = pm860x_set_bits(info->i2c, info->vol_reg, mask, val);
+       ret = pm860x_set_bits(info->i2c, info->vol_reg, mask, selector);
        if (ret)
                return ret;
        switch (info->desc.id) {
@@ -328,7 +293,7 @@ static int pm8607_is_enabled(struct regulator_dev *rdev)
 
 static struct regulator_ops pm8607_regulator_ops = {
        .list_voltage   = pm8607_list_voltage,
-       .set_voltage    = pm8607_set_voltage,
+       .set_voltage_sel = pm8607_set_voltage_sel,
        .get_voltage    = pm8607_get_voltage,
        .enable         = pm8607_enable,
        .disable        = pm8607_disable,