aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
authorJonghwan Choi <jhbird.choi@samsung.com>2011-11-06 18:16:04 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-11-23 09:02:48 -0500
commit43530b69d758328d3ffe6ab98fd640463e8e3667 (patch)
treea14f03874de3c8d5f312d357bc2b4bb96135a1ac /drivers/regulator
parentcfcfc9eca2bcbd26a8e206baeb005b055dbf8e37 (diff)
regulator: Use regmap_read/write(), regmap_update_bits functions directly
Current driver had the regmapcalls within the bodies of the driver specific read/write fuctions. This patch removes the original read/write functions and makes the call sites use regmap directly. Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/tps65023-regulator.c87
1 files changed, 32 insertions, 55 deletions
diff --git a/drivers/regulator/tps65023-regulator.c b/drivers/regulator/tps65023-regulator.c
index 9fb4c7b81753..e0bcd75a7cc4 100644
--- a/drivers/regulator/tps65023-regulator.c
+++ b/drivers/regulator/tps65023-regulator.c
@@ -152,48 +152,21 @@ struct tps_driver_data {
152 u8 core_regulator; 152 u8 core_regulator;
153}; 153};
154 154
155static int tps_65023_set_bits(struct tps_pmic *tps, u8 reg, u8 mask)
156{
157 return regmap_update_bits(tps->regmap, reg, mask, mask);
158}
159
160static int tps_65023_clear_bits(struct tps_pmic *tps, u8 reg, u8 mask)
161{
162 return regmap_update_bits(tps->regmap, reg, mask, 0);
163}
164
165static int tps_65023_reg_read(struct tps_pmic *tps, u8 reg)
166{
167 unsigned int val;
168 int ret;
169
170 ret = regmap_read(tps->regmap, reg, &val);
171
172 if (ret != 0)
173 return ret;
174 else
175 return val;
176}
177
178static int tps_65023_reg_write(struct tps_pmic *tps, u8 reg, u8 val)
179{
180 return regmap_write(tps->regmap, reg, val);
181}
182
183static int tps65023_dcdc_is_enabled(struct regulator_dev *dev) 155static int tps65023_dcdc_is_enabled(struct regulator_dev *dev)
184{ 156{
185 struct tps_pmic *tps = rdev_get_drvdata(dev); 157 struct tps_pmic *tps = rdev_get_drvdata(dev);
186 int data, dcdc = rdev_get_id(dev); 158 int data, dcdc = rdev_get_id(dev);
159 int ret;
187 u8 shift; 160 u8 shift;
188 161
189 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) 162 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
190 return -EINVAL; 163 return -EINVAL;
191 164
192 shift = TPS65023_NUM_REGULATOR - dcdc; 165 shift = TPS65023_NUM_REGULATOR - dcdc;
193 data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); 166 ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
194 167
195 if (data < 0) 168 if (ret != 0)
196 return data; 169 return ret;
197 else 170 else
198 return (data & 1<<shift) ? 1 : 0; 171 return (data & 1<<shift) ? 1 : 0;
199} 172}
@@ -202,16 +175,17 @@ static int tps65023_ldo_is_enabled(struct regulator_dev *dev)
202{ 175{
203 struct tps_pmic *tps = rdev_get_drvdata(dev); 176 struct tps_pmic *tps = rdev_get_drvdata(dev);
204 int data, ldo = rdev_get_id(dev); 177 int data, ldo = rdev_get_id(dev);
178 int ret;
205 u8 shift; 179 u8 shift;
206 180
207 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) 181 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
208 return -EINVAL; 182 return -EINVAL;
209 183
210 shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 184 shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
211 data = tps_65023_reg_read(tps, TPS65023_REG_REG_CTRL); 185 ret = regmap_read(tps->regmap, TPS65023_REG_REG_CTRL, &data);
212 186
213 if (data < 0) 187 if (ret != 0)
214 return data; 188 return ret;
215 else 189 else
216 return (data & 1<<shift) ? 1 : 0; 190 return (data & 1<<shift) ? 1 : 0;
217} 191}
@@ -226,7 +200,7 @@ static int tps65023_dcdc_enable(struct regulator_dev *dev)
226 return -EINVAL; 200 return -EINVAL;
227 201
228 shift = TPS65023_NUM_REGULATOR - dcdc; 202 shift = TPS65023_NUM_REGULATOR - dcdc;
229 return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); 203 return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
230} 204}
231 205
232static int tps65023_dcdc_disable(struct regulator_dev *dev) 206static int tps65023_dcdc_disable(struct regulator_dev *dev)
@@ -239,7 +213,7 @@ static int tps65023_dcdc_disable(struct regulator_dev *dev)
239 return -EINVAL; 213 return -EINVAL;
240 214
241 shift = TPS65023_NUM_REGULATOR - dcdc; 215 shift = TPS65023_NUM_REGULATOR - dcdc;
242 return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); 216 return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
243} 217}
244 218
245static int tps65023_ldo_enable(struct regulator_dev *dev) 219static int tps65023_ldo_enable(struct regulator_dev *dev)
@@ -252,7 +226,7 @@ static int tps65023_ldo_enable(struct regulator_dev *dev)
252 return -EINVAL; 226 return -EINVAL;
253 227
254 shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 228 shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
255 return tps_65023_set_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); 229 return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 1 << shift);
256} 230}
257 231
258static int tps65023_ldo_disable(struct regulator_dev *dev) 232static int tps65023_ldo_disable(struct regulator_dev *dev)
@@ -265,21 +239,22 @@ static int tps65023_ldo_disable(struct regulator_dev *dev)
265 return -EINVAL; 239 return -EINVAL;
266 240
267 shift = (ldo == TPS65023_LDO_1 ? 1 : 2); 241 shift = (ldo == TPS65023_LDO_1 ? 1 : 2);
268 return tps_65023_clear_bits(tps, TPS65023_REG_REG_CTRL, 1 << shift); 242 return regmap_update_bits(tps->regmap, TPS65023_REG_REG_CTRL, 1 << shift, 0);
269} 243}
270 244
271static int tps65023_dcdc_get_voltage(struct regulator_dev *dev) 245static int tps65023_dcdc_get_voltage(struct regulator_dev *dev)
272{ 246{
273 struct tps_pmic *tps = rdev_get_drvdata(dev); 247 struct tps_pmic *tps = rdev_get_drvdata(dev);
248 int ret;
274 int data, dcdc = rdev_get_id(dev); 249 int data, dcdc = rdev_get_id(dev);
275 250
276 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3) 251 if (dcdc < TPS65023_DCDC_1 || dcdc > TPS65023_DCDC_3)
277 return -EINVAL; 252 return -EINVAL;
278 253
279 if (dcdc == tps->core_regulator) { 254 if (dcdc == tps->core_regulator) {
280 data = tps_65023_reg_read(tps, TPS65023_REG_DEF_CORE); 255 ret = regmap_read(tps->regmap, TPS65023_REG_DEF_CORE, &data);
281 if (data < 0) 256 if (ret != 0)
282 return data; 257 return ret;
283 data &= (tps->info[dcdc]->table_len - 1); 258 data &= (tps->info[dcdc]->table_len - 1);
284 return tps->info[dcdc]->table[data] * 1000; 259 return tps->info[dcdc]->table[data] * 1000;
285 } else 260 } else
@@ -318,13 +293,13 @@ static int tps65023_dcdc_set_voltage(struct regulator_dev *dev,
318 if (vsel == tps->info[dcdc]->table_len) 293 if (vsel == tps->info[dcdc]->table_len)
319 goto failed; 294 goto failed;
320 295
321 ret = tps_65023_reg_write(tps, TPS65023_REG_DEF_CORE, vsel); 296 ret = regmap_write(tps->regmap, TPS65023_REG_DEF_CORE, vsel);
322 297
323 /* Tell the chip that we have changed the value in DEFCORE 298 /* Tell the chip that we have changed the value in DEFCORE
324 * and its time to update the core voltage 299 * and its time to update the core voltage
325 */ 300 */
326 tps_65023_set_bits(tps, TPS65023_REG_CON_CTRL2, 301 regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
327 TPS65023_REG_CTRL2_GO); 302 TPS65023_REG_CTRL2_GO, TPS65023_REG_CTRL2_GO);
328 303
329 return ret; 304 return ret;
330 305
@@ -336,13 +311,14 @@ static int tps65023_ldo_get_voltage(struct regulator_dev *dev)
336{ 311{
337 struct tps_pmic *tps = rdev_get_drvdata(dev); 312 struct tps_pmic *tps = rdev_get_drvdata(dev);
338 int data, ldo = rdev_get_id(dev); 313 int data, ldo = rdev_get_id(dev);
314 int ret;
339 315
340 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) 316 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
341 return -EINVAL; 317 return -EINVAL;
342 318
343 data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); 319 ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
344 if (data < 0) 320 if (ret != 0)
345 return data; 321 return ret;
346 322
347 data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)); 323 data >>= (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1));
348 data &= (tps->info[ldo]->table_len - 1); 324 data &= (tps->info[ldo]->table_len - 1);
@@ -354,6 +330,7 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
354{ 330{
355 struct tps_pmic *tps = rdev_get_drvdata(dev); 331 struct tps_pmic *tps = rdev_get_drvdata(dev);
356 int data, vsel, ldo = rdev_get_id(dev); 332 int data, vsel, ldo = rdev_get_id(dev);
333 int ret;
357 334
358 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2) 335 if (ldo < TPS65023_LDO_1 || ldo > TPS65023_LDO_2)
359 return -EINVAL; 336 return -EINVAL;
@@ -377,13 +354,13 @@ static int tps65023_ldo_set_voltage(struct regulator_dev *dev,
377 354
378 *selector = vsel; 355 *selector = vsel;
379 356
380 data = tps_65023_reg_read(tps, TPS65023_REG_LDO_CTRL); 357 ret = regmap_read(tps->regmap, TPS65023_REG_LDO_CTRL, &data);
381 if (data < 0) 358 if (ret != 0)
382 return data; 359 return ret;
383 360
384 data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1); 361 data &= TPS65023_LDO_CTRL_LDOx_MASK(ldo - TPS65023_LDO_1);
385 data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1))); 362 data |= (vsel << (TPS65023_LDO_CTRL_LDOx_SHIFT(ldo - TPS65023_LDO_1)));
386 return tps_65023_reg_write(tps, TPS65023_REG_LDO_CTRL, data); 363 return regmap_write(tps->regmap, TPS65023_REG_LDO_CTRL, data);
387} 364}
388 365
389static int tps65023_dcdc_list_voltage(struct regulator_dev *dev, 366static int tps65023_dcdc_list_voltage(struct regulator_dev *dev,
@@ -511,12 +488,12 @@ static int __devinit tps_65023_probe(struct i2c_client *client,
511 i2c_set_clientdata(client, tps); 488 i2c_set_clientdata(client, tps);
512 489
513 /* Enable setting output voltage by I2C */ 490 /* Enable setting output voltage by I2C */
514 tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, 491 regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
515 TPS65023_REG_CTRL2_CORE_ADJ); 492 TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
516 493
517 /* Enable setting output voltage by I2C */ 494 /* Enable setting output voltage by I2C */
518 tps_65023_clear_bits(tps, TPS65023_REG_CON_CTRL2, 495 regmap_update_bits(tps->regmap, TPS65023_REG_CON_CTRL2,
519 TPS65023_REG_CTRL2_CORE_ADJ); 496 TPS65023_REG_CTRL2_CORE_ADJ, TPS65023_REG_CTRL2_CORE_ADJ);
520 497
521 return 0; 498 return 0;
522 499