diff options
author | Axel Lin <axel.lin@ingics.com> | 2013-04-22 23:54:48 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-04-23 06:32:56 -0400 |
commit | 46bcb006ae92cdd10c39eeaecf2ca4994026943a (patch) | |
tree | 152b9628b73c9e0158c92632df8af2caca60b70d | |
parent | 60d509fa6a9c4653a86ad830e4c4b30360b23f0e (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.c | 31 |
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 { | |||
154 | static int tps65023_dcdc_get_voltage_sel(struct regulator_dev *dev) | 154 | static 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 | ||
173 | static int tps65023_dcdc_set_voltage_sel(struct regulator_dev *dev, | 168 | static 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 | |||
193 | out: | ||
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; |