regulator: da9055: Use linear_min_sel and regulator_[map|list]_voltage_linear
[deliverable/linux.git] / drivers / regulator / da9055-regulator.c
index 79c56655b9b3138c5cf913e4ef67e63ea5ad4a75..2253559703ced0eb2416524f801f289bcd48409a 100644 (file)
@@ -57,7 +57,6 @@ struct da9055_volt_reg {
        int reg_a;
        int reg_b;
        int sl_shift;
-       int v_offset;
        int v_mask;
        int v_shift;
 };
@@ -232,26 +231,7 @@ static int da9055_regulator_get_voltage_sel(struct regulator_dev *rdev)
                return ret;
 
        sel = (ret & volt.v_mask);
-       if (sel <= volt.v_offset)
-               return 0;
-       else
-               return sel;
-}
-
-static int da9055_regulator_set_voltage_bits(struct regulator_dev *rdev,
-                                            unsigned int reg,
-                                            unsigned int selector)
-{
-       struct da9055_regulator *regulator = rdev_get_drvdata(rdev);
-       struct da9055_regulator_info *info = regulator->info;
-
-       /* Takes care of voltage range that does not start with 0 offset. */
-       selector += info->volt.v_offset;
-
-       /* Set the voltage */
-       return da9055_reg_update(regulator->da9055, reg, info->volt.v_mask,
-                                selector);
-
+       return sel;
 }
 
 static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev,
@@ -273,8 +253,8 @@ static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev,
                        return ret;
 
                /* Set the voltage */
-               return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_a,
-                                                        selector);
+               return da9055_reg_update(regulator->da9055, info->volt.reg_a,
+                                        info->volt.v_mask, selector);
        }
 
        /*
@@ -290,11 +270,11 @@ static int da9055_regulator_set_voltage_sel(struct regulator_dev *rdev,
 
        /* Set the voltage */
        if (ret == DA9055_REGUALTOR_SET_A)
-               return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_a,
-                                                        selector);
+               return da9055_reg_update(regulator->da9055, info->volt.reg_a,
+                                        info->volt.v_mask, selector);
        else
-               return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_b,
-                                                selector);
+               return da9055_reg_update(regulator->da9055, info->volt.reg_b,
+                                        info->volt.v_mask, selector);
 }
 
 static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev,
@@ -316,7 +296,8 @@ static int da9055_regulator_set_suspend_voltage(struct regulator_dev *rdev,
        if (ret < 0)
                return ret;
 
-       return da9055_regulator_set_voltage_bits(rdev, info->volt.reg_b, ret);
+       return da9055_reg_update(regulator->da9055, info->volt.reg_b,
+                                info->volt.v_mask, ret);
 }
 
 static int da9055_suspend_enable(struct regulator_dev *rdev)
@@ -392,11 +373,12 @@ static struct regulator_ops da9055_ldo_ops = {
                .ops = &da9055_ldo_ops,\
                .type = REGULATOR_VOLTAGE,\
                .id = DA9055_ID_##_id,\
-               .n_voltages = (max - min) / step + 1, \
+               .n_voltages = (max - min) / step + 1 + (voffset), \
                .enable_reg = DA9055_REG_BCORE_CONT + DA9055_ID_##_id, \
                .enable_mask = 1, \
                .min_uV = (min) * 1000,\
                .uV_step = (step) * 1000,\
+               .linear_min_sel = (voffset),\
                .owner = THIS_MODULE,\
        },\
        .conf = {\
@@ -408,7 +390,6 @@ static struct regulator_ops da9055_ldo_ops = {
                .reg_a = DA9055_REG_VBCORE_A + DA9055_ID_##_id, \
                .reg_b = DA9055_REG_VBCORE_B + DA9055_ID_##_id, \
                .sl_shift = 7,\
-               .v_offset = (voffset),\
                .v_mask = (1 << (vbits)) - 1,\
                .v_shift = (vbits),\
        },\
@@ -421,11 +402,12 @@ static struct regulator_ops da9055_ldo_ops = {
                .ops = &da9055_buck_ops,\
                .type = REGULATOR_VOLTAGE,\
                .id = DA9055_ID_##_id,\
-               .n_voltages = (max - min) / step + 1, \
+               .n_voltages = (max - min) / step + 1 + (voffset), \
                .enable_reg = DA9055_REG_BCORE_CONT + DA9055_ID_##_id, \
                .enable_mask = 1,\
                .min_uV = (min) * 1000,\
                .uV_step = (step) * 1000,\
+               .linear_min_sel = (voffset),\
                .owner = THIS_MODULE,\
        },\
        .conf = {\
@@ -437,7 +419,6 @@ static struct regulator_ops da9055_ldo_ops = {
                .reg_a = DA9055_REG_VBCORE_A + DA9055_ID_##_id, \
                .reg_b = DA9055_REG_VBCORE_B + DA9055_ID_##_id, \
                .sl_shift = 7,\
-               .v_offset = (voffset),\
                .v_mask = (1 << (vbits)) - 1,\
                .v_shift = (vbits),\
        },\
This page took 0.029701 seconds and 5 git commands to generate.