Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: tps51632: Use regulator_[get|set]_voltage_sel_regmap

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>

authored by

Axel Lin and committed by
Mark Brown
d94d9aca c51ce403

+8 -44
+8 -44
drivers/regulator/tps51632-regulator.c
··· 88 88 struct regulator_desc desc; 89 89 struct regulator_dev *rdev; 90 90 struct regmap *regmap; 91 - bool enable_pwm_dvfs; 92 91 }; 93 - 94 - static int tps51632_dcdc_get_voltage_sel(struct regulator_dev *rdev) 95 - { 96 - struct tps51632_chip *tps = rdev_get_drvdata(rdev); 97 - unsigned int data; 98 - int ret; 99 - unsigned int reg = TPS51632_VOLTAGE_SELECT_REG; 100 - int vsel; 101 - 102 - if (tps->enable_pwm_dvfs) 103 - reg = TPS51632_VOLTAGE_BASE_REG; 104 - 105 - ret = regmap_read(tps->regmap, reg, &data); 106 - if (ret < 0) { 107 - dev_err(tps->dev, "reg read failed, err %d\n", ret); 108 - return ret; 109 - } 110 - 111 - vsel = data & TPS51632_VOUT_MASK; 112 - return vsel; 113 - } 114 - 115 - static int tps51632_dcdc_set_voltage_sel(struct regulator_dev *rdev, 116 - unsigned selector) 117 - { 118 - struct tps51632_chip *tps = rdev_get_drvdata(rdev); 119 - int ret; 120 - unsigned int reg = TPS51632_VOLTAGE_SELECT_REG; 121 - 122 - if (tps->enable_pwm_dvfs) 123 - reg = TPS51632_VOLTAGE_BASE_REG; 124 - 125 - if (selector > TPS51632_MAX_VSEL) 126 - return -EINVAL; 127 - 128 - ret = regmap_write(tps->regmap, reg, selector); 129 - if (ret < 0) 130 - dev_err(tps->dev, "reg write failed, err %d\n", ret); 131 - return ret; 132 - } 133 92 134 93 static int tps51632_dcdc_set_ramp_delay(struct regulator_dev *rdev, 135 94 int ramp_delay) ··· 106 147 } 107 148 108 149 static struct regulator_ops tps51632_dcdc_ops = { 109 - .get_voltage_sel = tps51632_dcdc_get_voltage_sel, 110 - .set_voltage_sel = tps51632_dcdc_set_voltage_sel, 150 + .get_voltage_sel = regulator_get_voltage_sel_regmap, 151 + .set_voltage_sel = regulator_set_voltage_sel_regmap, 111 152 .list_voltage = regulator_list_voltage_linear, 112 153 .set_voltage_time_sel = regulator_set_voltage_time_sel, 113 154 .set_ramp_delay = tps51632_dcdc_set_ramp_delay, ··· 124 165 goto skip_pwm_config; 125 166 126 167 control |= TPS51632_DVFS_PWMEN; 127 - tps->enable_pwm_dvfs = pdata->enable_pwm_dvfs; 128 168 vsel = TPS51632_VOLT_VSEL(pdata->base_voltage_uV); 129 169 ret = regmap_write(tps->regmap, TPS51632_VOLTAGE_BASE_REG, vsel); 130 170 if (ret < 0) { ··· 315 357 tps->desc.ops = &tps51632_dcdc_ops; 316 358 tps->desc.type = REGULATOR_VOLTAGE; 317 359 tps->desc.owner = THIS_MODULE; 360 + 361 + if (pdata->enable_pwm_dvfs) 362 + tps->desc.vsel_reg = TPS51632_VOLTAGE_BASE_REG; 363 + else 364 + tps->desc.vsel_reg = TPS51632_VOLTAGE_SELECT_REG; 365 + tps->desc.vsel_mask = TPS51632_VOUT_MASK; 318 366 319 367 tps->regmap = devm_regmap_init_i2c(client, &tps51632_regmap_config); 320 368 if (IS_ERR(tps->regmap)) {