regulator: tps51632: Use regulator_[get|set]_voltage_sel_regmap
authorAxel Lin <axel.lin@ingics.com>
Wed, 13 Feb 2013 09:01:09 +0000 (17:01 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 13 Feb 2013 12:58:40 +0000 (12:58 +0000)
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/tps51632-regulator.c

index 7560d07..6e67be7 100644 (file)
@@ -88,49 +88,8 @@ struct tps51632_chip {
        struct regulator_desc desc;
        struct regulator_dev *rdev;
        struct regmap *regmap;
-       bool enable_pwm_dvfs;
 };
 
-static int tps51632_dcdc_get_voltage_sel(struct regulator_dev *rdev)
-{
-       struct tps51632_chip *tps = rdev_get_drvdata(rdev);
-       unsigned int data;
-       int ret;
-       unsigned int reg = TPS51632_VOLTAGE_SELECT_REG;
-       int vsel;
-
-       if (tps->enable_pwm_dvfs)
-               reg = TPS51632_VOLTAGE_BASE_REG;
-
-       ret = regmap_read(tps->regmap, reg, &data);
-       if (ret < 0) {
-               dev_err(tps->dev, "reg read failed, err %d\n", ret);
-               return ret;
-       }
-
-       vsel = data & TPS51632_VOUT_MASK;
-       return vsel;
-}
-
-static int tps51632_dcdc_set_voltage_sel(struct regulator_dev *rdev,
-               unsigned selector)
-{
-       struct tps51632_chip *tps = rdev_get_drvdata(rdev);
-       int ret;
-       unsigned int reg = TPS51632_VOLTAGE_SELECT_REG;
-
-       if (tps->enable_pwm_dvfs)
-               reg = TPS51632_VOLTAGE_BASE_REG;
-
-       if (selector > TPS51632_MAX_VSEL)
-               return -EINVAL;
-
-       ret = regmap_write(tps->regmap, reg, selector);
-       if (ret < 0)
-               dev_err(tps->dev, "reg write failed, err %d\n", ret);
-       return ret;
-}
-
 static int tps51632_dcdc_set_ramp_delay(struct regulator_dev *rdev,
                int ramp_delay)
 {
@@ -147,8 +106,8 @@ static int tps51632_dcdc_set_ramp_delay(struct regulator_dev *rdev,
 }
 
 static struct regulator_ops tps51632_dcdc_ops = {
-       .get_voltage_sel        = tps51632_dcdc_get_voltage_sel,
-       .set_voltage_sel        = tps51632_dcdc_set_voltage_sel,
+       .get_voltage_sel        = regulator_get_voltage_sel_regmap,
+       .set_voltage_sel        = regulator_set_voltage_sel_regmap,
        .list_voltage           = regulator_list_voltage_linear,
        .set_voltage_time_sel   = regulator_set_voltage_time_sel,
        .set_ramp_delay         = tps51632_dcdc_set_ramp_delay,
@@ -165,7 +124,6 @@ static int tps51632_init_dcdc(struct tps51632_chip *tps,
                goto skip_pwm_config;
 
        control |= TPS51632_DVFS_PWMEN;
-       tps->enable_pwm_dvfs = pdata->enable_pwm_dvfs;
        vsel = TPS51632_VOLT_VSEL(pdata->base_voltage_uV);
        ret = regmap_write(tps->regmap, TPS51632_VOLTAGE_BASE_REG, vsel);
        if (ret < 0) {
@@ -358,6 +316,12 @@ static int tps51632_probe(struct i2c_client *client,
        tps->desc.type = REGULATOR_VOLTAGE;
        tps->desc.owner = THIS_MODULE;
 
+       if (pdata->enable_pwm_dvfs)
+               tps->desc.vsel_reg = TPS51632_VOLTAGE_BASE_REG;
+       else
+               tps->desc.vsel_reg = TPS51632_VOLTAGE_SELECT_REG;
+       tps->desc.vsel_mask = TPS51632_VOUT_MASK;
+
        tps->regmap = devm_regmap_init_i2c(client, &tps51632_regmap_config);
        if (IS_ERR(tps->regmap)) {
                ret = PTR_ERR(tps->regmap);