aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2013-04-22 23:54:48 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-23 06:32:56 -0400
commit46bcb006ae92cdd10c39eeaecf2ca4994026943a (patch)
tree152b9628b73c9e0158c92632df8af2caca60b70d
parent60d509fa6a9c4653a86ad830e4c4b30360b23f0e (diff)
regulator: tps65023: Use [set|get]_voltage_sel_regmap instead of open coded
Simply the [get|set]_voltage_sel implementation by using regulator_[set|get]_voltage_sel_regmap instead of open coded. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--drivers/regulator/tps65023-regulator.c31
1 files changed, 9 insertions, 22 deletions
diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
index 9b9af6d889c8..21a890acf486 100644
--- a/drivers/regulator/tps65023-regulator.c
+++ b/drivers/regulator/tps65023-regulator.c
@@ -154,20 +154,15 @@ struct tps_driver_data {
154static int tps65023_dcdc_get_voltage_sel(struct regulator_dev *dev) 154static int tps65023_dcdc_get_voltage_sel(struct regulator_dev *dev)
155{ 155{
156 struct tps_pmic *tps = rdev_get_drvdata(dev); 156 struct tps_pmic *tps = rdev_get_drvdata(dev);
157 int ret; 157 int dcdc = rdev_get_id(dev);
158 int data, dcdc = rdev_get_id(dev);
159 158
160 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) 159 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
161 return -EINVAL; 160 return -EINVAL;
162 161
163 if (dcdc == tps->core_regulator) { 162 if (dcdc != tps->core_regulator)
164 ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
165 if (ret != 0)
166 return ret;
167 data &= (tps->info[dcdc]->table_len - 1);
168 return data;
169 } else
170 return 0; 163 return 0;
164
165 return regulator_get_voltage_sel_regmap(dev);
171} 166}
172 167
173static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev, 168static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev,
@@ -175,23 +170,11 @@ static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev,
175{ 170{
176 struct tps_pmic *tps = rdev_get_drvdata(dev); 171 struct tps_pmic *tps = rdev_get_drvdata(dev);
177 int dcdc = rdev_get_id(dev); 172 int dcdc = rdev_get_id(dev);
178 int ret;
179 173
180 if (dcdc != tps->core_regulator) 174 if (dcdc != tps->core_regulator)
181 return -EINVAL; 175 return -EINVAL;
182 176
183 ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, selector); 177 return regulator_set_voltage_sel_regmap(dev, selector);
184 if (ret)
185 goto out;
186
187 /* Tell the chip that we have changed the value in DEFCORE
188 * and its time to update the core voltage
189 */
190 ret = regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
191 TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO);
192
193out:
194 return ret;
195} 178}
196 179
197/* Operations permitted on VDCDCx */ 180/* Operations permitted on VDCDCx */
@@ -285,6 +268,10 @@ static int tps_65023_probe(struct i2c_client *client,
285 default: /* DCDCx */ 268 default: /* DCDCx */
286 tps->desc[i].enable_mask = 269 tps->desc[i].enable_mask =
287 1 << (TPS65023_NUM_REGULATOR - i); 270 1 << (TPS65023_NUM_REGULATOR - i);
271 tps->desc[i].vsel_reg = TPS65023_REG_DEF_CORE;
272 tps->desc[i].vsel_mask = info->table_len - 1;
273 tps->desc[i].apply_reg = TPS65023_REG_CON_CTRL2;
274 tps->desc[i].apply_bit = TPS65023_REG_CTRL2_GO;
288 } 275 }
289 276
290 config.dev = &client->dev; 277 config.dev = &client->dev;