Skip to content

Commit

Permalink
regulator: Use array to store dcdc_range settings for tps65912
Browse files Browse the repository at this point in the history
Then we can use the regulator id as array index to access the array.
This change makes the code simpler.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Axel Lin authored and Mark Brown committed Mar 11, 2012
1 parent 5b5e977 commit 85c5d86
Showing 1 changed file with 20 additions and 50 deletions.
70 changes: 20 additions & 50 deletions drivers/regulator/tps65912-regulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,57 +114,39 @@ struct tps65912_reg {
struct mutex io_lock;
int mode;
int (*get_ctrl_reg)(int);
int dcdc1_range;
int dcdc2_range;
int dcdc3_range;
int dcdc4_range;
int dcdc_range[TPS65912_NUM_DCDC];
int pwm_mode_reg;
int eco_reg;
};

static int tps65912_get_range(struct tps65912_reg *pmic, int id)
{
struct tps65912 *mfd = pmic->mfd;

if (id > TPS65912_REG_DCDC4)
return 0;
int range;

switch (id) {
case TPS65912_REG_DCDC1:
pmic->dcdc1_range = tps65912_reg_read(mfd,
TPS65912_DCDC1_LIMIT);
if (pmic->dcdc1_range < 0)
return pmic->dcdc1_range;
pmic->dcdc1_range = (pmic->dcdc1_range &
DCDC_LIMIT_RANGE_MASK) >> DCDC_LIMIT_RANGE_SHIFT;
return pmic->dcdc1_range;
range = tps65912_reg_read(mfd, TPS65912_DCDC1_LIMIT);
break;
case TPS65912_REG_DCDC2:
pmic->dcdc2_range = tps65912_reg_read(mfd,
TPS65912_DCDC2_LIMIT);
if (pmic->dcdc2_range < 0)
return pmic->dcdc2_range;
pmic->dcdc2_range = (pmic->dcdc2_range &
DCDC_LIMIT_RANGE_MASK) >> DCDC_LIMIT_RANGE_SHIFT;
return pmic->dcdc2_range;
range = tps65912_reg_read(mfd, TPS65912_DCDC2_LIMIT);
break;
case TPS65912_REG_DCDC3:
pmic->dcdc3_range = tps65912_reg_read(mfd,
TPS65912_DCDC3_LIMIT);
if (pmic->dcdc3_range < 0)
return pmic->dcdc3_range;
pmic->dcdc3_range = (pmic->dcdc3_range &
DCDC_LIMIT_RANGE_MASK) >> DCDC_LIMIT_RANGE_SHIFT;
return pmic->dcdc3_range;
range = tps65912_reg_read(mfd, TPS65912_DCDC3_LIMIT);
break;
case TPS65912_REG_DCDC4:
pmic->dcdc4_range = tps65912_reg_read(mfd,
TPS65912_DCDC4_LIMIT);
if (pmic->dcdc4_range < 0)
return pmic->dcdc4_range;
pmic->dcdc4_range = (pmic->dcdc4_range &
DCDC_LIMIT_RANGE_MASK) >> DCDC_LIMIT_RANGE_SHIFT;
return pmic->dcdc4_range;
range = tps65912_reg_read(mfd, TPS65912_DCDC4_LIMIT);
break;
default:
return 0;
}

if (range >= 0)
range = (range & DCDC_LIMIT_RANGE_MASK)
>> DCDC_LIMIT_RANGE_SHIFT;

pmic->dcdc_range[id] = range;
return range;
}

static unsigned long tps65912_vsel_to_uv_range0(u8 vsel)
Expand Down Expand Up @@ -512,22 +494,10 @@ static int tps65912_list_voltage_dcdc(struct regulator_dev *dev,
struct tps65912_reg *pmic = rdev_get_drvdata(dev);
int range, voltage = 0, id = rdev_get_id(dev);

switch (id) {
case TPS65912_REG_DCDC1:
range = pmic->dcdc1_range;
break;
case TPS65912_REG_DCDC2:
range = pmic->dcdc2_range;
break;
case TPS65912_REG_DCDC3:
range = pmic->dcdc3_range;
break;
case TPS65912_REG_DCDC4:
range = pmic->dcdc4_range;
break;
default:
if (id > TPS65912_REG_DCDC4)
return -EINVAL;
}

range = pmic->dcdc_range[id];

switch (range) {
case 0:
Expand Down

0 comments on commit 85c5d86

Please sign in to comment.