Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5ec9635 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

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: default avatarAxel Lin <axel.lin@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 24c896f5
Loading
Loading
Loading
Loading
+6 −27
Original line number Diff line number Diff line
@@ -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;
				 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,