diff options
| author | Axel Lin <axel.lin@gmail.com> | 2012-03-23 16:49:22 +0800 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-01 11:59:28 +0100 | 
| commit | d5ec96357d743288bd03a685defd586ad35d351e (patch) | |
| tree | d30cec9d5ce3f5ab9d3d44e9e67c1c82cddf11ee | |
| parent | 24c896f5482d864f526ce3d085eb90298b82c49f (diff) | |
| download | olio-linux-3.10-d5ec96357d743288bd03a685defd586ad35d351e.tar.xz olio-linux-3.10-d5ec96357d743288bd03a685defd586ad35d351e.zip  | |
regulator: Convert pcap-regulator to set_voltage_sel
After converting to set_voltage_sel, we can remove the workaroud of getting
the best match voltage for V1. The core will iterate through the whole voltage
table and find the best match for us.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| -rw-r--r-- | drivers/regulator/pcap-regulator.c | 33 | 
1 files changed, 6 insertions, 27 deletions
diff --git a/drivers/regulator/pcap-regulator.c b/drivers/regulator/pcap-regulator.c index a5aab1b08bc..b9666a2c45f 100644 --- a/drivers/regulator/pcap-regulator.c +++ b/drivers/regulator/pcap-regulator.c @@ -150,40 +150,19 @@ static struct pcap_regulator vreg_table[] = {  	VREG_INFO(SW2S,  PCAP_REG_LOWPWR,  NA, 20, NA, NA), */  }; -static int pcap_regulator_set_voltage(struct regulator_dev *rdev, -				      int min_uV, int max_uV, -				      unsigned *selector) +static int pcap_regulator_set_voltage_sel(struct regulator_dev *rdev, +					  unsigned selector)  {  	struct pcap_regulator *vreg = &vreg_table[rdev_get_id(rdev)];  	void *pcap = rdev_get_drvdata(rdev); -	int uV; -	u8 i;  	/* the regulator doesn't support voltage switching */  	if (vreg->n_voltages == 1)  		return -EINVAL; -	for (i = 0; i < vreg->n_voltages; i++) { -		/* For V1 the first is not the best match */ -		if (i == 0 && rdev_get_id(rdev) == V1) -			i = 1; -		else if (i + 1 == vreg->n_voltages && rdev_get_id(rdev) == V1) -			i = 0; - -		uV = vreg->voltage_table[i] * 1000; -		if (min_uV <= uV && uV <= max_uV) { -			*selector = i; -			return ezx_pcap_set_bits(pcap, vreg->reg, -					(vreg->n_voltages - 1) << vreg->index, -					i << vreg->index); -		} - -		if (i == 0 && rdev_get_id(rdev) == V1) -			i = vreg->n_voltages - 1; -	} - -	/* the requested voltage range is not supported by this regulator */ -	return -EINVAL; +	return ezx_pcap_set_bits(pcap, vreg->reg, +				 (vreg->n_voltages - 1) << vreg->index, +				 selector << vreg->index);  }  static int pcap_regulator_get_voltage(struct regulator_dev *rdev) @@ -248,7 +227,7 @@ static int pcap_regulator_list_voltage(struct regulator_dev *rdev,  static struct regulator_ops pcap_regulator_ops = {  	.list_voltage	= pcap_regulator_list_voltage, -	.set_voltage	= pcap_regulator_set_voltage, +	.set_voltage_sel = pcap_regulator_set_voltage_sel,  	.get_voltage	= pcap_regulator_get_voltage,  	.enable		= pcap_regulator_enable,  	.disable	= pcap_regulator_disable,  |