diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-03-13 22:20:01 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-14 08:37:23 -0400 |
commit | c567556e75534316f1ae800b0a0fbbc687d0662e (patch) | |
tree | a66445c8ea0f9e81e5bc8a7685283eaf8c462f1c /drivers | |
parent | 831c986f5dfc9f29f5237697029f7faf24521413 (diff) |
regulator: Simplify implementation of tps65912_get_voltage_dcdc
Call tps65912_get_sel_register instead of duplicating the same code.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/regulator/tps65912-regulator.c | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/drivers/regulator/tps65912-regulator.c b/drivers/regulator/tps65912-regulator.c index 988d0ec40d2e..b36799b1f530 100644 --- a/drivers/regulator/tps65912-regulator.c +++ b/drivers/regulator/tps65912-regulator.c | |||
@@ -409,34 +409,13 @@ static int tps65912_get_voltage_dcdc(struct regulator_dev *dev) | |||
409 | struct tps65912_reg *pmic = rdev_get_drvdata(dev); | 409 | struct tps65912_reg *pmic = rdev_get_drvdata(dev); |
410 | struct tps65912 *mfd = pmic->mfd; | 410 | struct tps65912 *mfd = pmic->mfd; |
411 | int id = rdev_get_id(dev); | 411 | int id = rdev_get_id(dev); |
412 | int opvsel = 0, avsel = 0, sr, vsel; | 412 | int reg, vsel; |
413 | 413 | ||
414 | switch (id) { | 414 | reg = tps65912_get_sel_register(pmic, id); |
415 | case TPS65912_REG_DCDC1: | 415 | if (reg < 0) |
416 | opvsel = tps65912_reg_read(mfd, TPS65912_DCDC1_OP); | 416 | return reg; |
417 | avsel = tps65912_reg_read(mfd, TPS65912_DCDC1_AVS); | ||
418 | break; | ||
419 | case TPS65912_REG_DCDC2: | ||
420 | opvsel = tps65912_reg_read(mfd, TPS65912_DCDC2_OP); | ||
421 | avsel = tps65912_reg_read(mfd, TPS65912_DCDC2_AVS); | ||
422 | break; | ||
423 | case TPS65912_REG_DCDC3: | ||
424 | opvsel = tps65912_reg_read(mfd, TPS65912_DCDC3_OP); | ||
425 | avsel = tps65912_reg_read(mfd, TPS65912_DCDC3_AVS); | ||
426 | break; | ||
427 | case TPS65912_REG_DCDC4: | ||
428 | opvsel = tps65912_reg_read(mfd, TPS65912_DCDC4_OP); | ||
429 | avsel = tps65912_reg_read(mfd, TPS65912_DCDC4_AVS); | ||
430 | break; | ||
431 | default: | ||
432 | return -EINVAL; | ||
433 | } | ||
434 | 417 | ||
435 | sr = (opvsel & OP_SELREG_MASK) >> OP_SELREG_SHIFT; | 418 | vsel = tps65912_reg_read(mfd, reg); |
436 | if (sr) | ||
437 | vsel = avsel; | ||
438 | else | ||
439 | vsel = opvsel; | ||
440 | vsel &= 0x3F; | 419 | vsel &= 0x3F; |
441 | 420 | ||
442 | return tps65912_list_voltage_dcdc(dev, vsel); | 421 | return tps65912_list_voltage_dcdc(dev, vsel); |