diff options
| -rw-r--r-- | drivers/regulator/tps65910-regulator.c | 14 | ||||
| -rw-r--r-- | include/linux/mfd/tps65910.h | 3 | 
2 files changed, 10 insertions, 7 deletions
| diff --git a/drivers/regulator/tps65910-regulator.c b/drivers/regulator/tps65910-regulator.c index 66d2d60b436a..b552aae55b41 100644 --- a/drivers/regulator/tps65910-regulator.c +++ b/drivers/regulator/tps65910-regulator.c @@ -664,10 +664,10 @@ static int tps65910_set_voltage_dcdc(struct regulator_dev *dev,  	switch (id) {  	case TPS65910_REG_VDD1: -		dcdc_mult = (selector / VDD1_2_NUM_VOLTS) + 1; +		dcdc_mult = (selector / VDD1_2_NUM_VOLT_FINE) + 1;  		if (dcdc_mult == 1)  			dcdc_mult--; -		vsel = (selector % VDD1_2_NUM_VOLTS) + 3; +		vsel = (selector % VDD1_2_NUM_VOLT_FINE) + 3;  		tps65910_modify_bits(pmic, TPS65910_VDD1,  				(dcdc_mult << VDD1_VGAIN_SEL_SHIFT), @@ -675,10 +675,10 @@ static int tps65910_set_voltage_dcdc(struct regulator_dev *dev,  		tps65910_reg_write(pmic, TPS65910_VDD1_OP, vsel);  		break;  	case TPS65910_REG_VDD2: -		dcdc_mult = (selector / VDD1_2_NUM_VOLTS) + 1; +		dcdc_mult = (selector / VDD1_2_NUM_VOLT_FINE) + 1;  		if (dcdc_mult == 1)  			dcdc_mult--; -		vsel = (selector % VDD1_2_NUM_VOLTS) + 3; +		vsel = (selector % VDD1_2_NUM_VOLT_FINE) + 3;  		tps65910_modify_bits(pmic, TPS65910_VDD2,  				(dcdc_mult << VDD2_VGAIN_SEL_SHIFT), @@ -756,9 +756,9 @@ static int tps65910_list_voltage_dcdc(struct regulator_dev *dev,  	switch (id) {  	case TPS65910_REG_VDD1:  	case TPS65910_REG_VDD2: -		mult = (selector / VDD1_2_NUM_VOLTS) + 1; +		mult = (selector / VDD1_2_NUM_VOLT_FINE) + 1;  		volt = VDD1_2_MIN_VOLT + -				(selector % VDD1_2_NUM_VOLTS) * VDD1_2_OFFSET; +				(selector % VDD1_2_NUM_VOLT_FINE) * VDD1_2_OFFSET;  		break;  	case TPS65911_REG_VDDCTRL:  		volt = VDDCTRL_MIN_VOLT + (selector * VDDCTRL_OFFSET); @@ -947,6 +947,8 @@ static __devinit int tps65910_probe(struct platform_device *pdev)  		if (i == TPS65910_REG_VDD1 || i == TPS65910_REG_VDD2) {  			pmic->desc[i].ops = &tps65910_ops_dcdc; +			pmic->desc[i].n_voltages = VDD1_2_NUM_VOLT_FINE * +							VDD1_2_NUM_VOLT_COARSE;  		} else if (i == TPS65910_REG_VDD3) {  			if (tps65910_chip_id(tps65910) == TPS65910)  				pmic->desc[i].ops = &tps65910_ops_vdd3; diff --git a/include/linux/mfd/tps65910.h b/include/linux/mfd/tps65910.h index 82b4c8801a4f..8bf2cb9502dd 100644 --- a/include/linux/mfd/tps65910.h +++ b/include/linux/mfd/tps65910.h @@ -243,7 +243,8 @@  /*Registers VDD1, VDD2 voltage values definitions */ -#define VDD1_2_NUM_VOLTS				73 +#define VDD1_2_NUM_VOLT_FINE				73 +#define VDD1_2_NUM_VOLT_COARSE				3  #define VDD1_2_MIN_VOLT					6000  #define VDD1_2_OFFSET					125 | 
