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

Commit b12ef03a authored by Dan Murphy's avatar Dan Murphy Committed by Jacek Anaszewski
Browse files

leds: lp8860: Add regulator enable during init



Add the regulator enable call during initialization.
If init fails then disable the regulator.

Also during init the gpio gets set low even
on a passing case so add if everything passes
then return.

Signed-off-by: default avatarDan Murphy <dmurphy@ti.com>
Signed-off-by: default avatarJacek Anaszewski <jacek.anaszewski@gmail.com>
parent 8a7a76c8
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -247,6 +247,15 @@ static int lp8860_init(struct lp8860_led *led)
	unsigned int read_buf;
	int ret, i, reg_count;

	if (led->regulator) {
		ret = regulator_enable(led->regulator);
		if (ret) {
			dev_err(&led->client->dev,
				"Failed to enable regulator\n");
			return ret;
		}
	}

	if (led->enable_gpio)
		gpiod_direction_output(led->enable_gpio, 1);

@@ -282,12 +291,25 @@ static int lp8860_init(struct lp8860_led *led)
	ret = regmap_write(led->regmap,
			LP8860_EEPROM_CNTRL,
			LP8860_PROGRAM_EEPROM);
	if (ret)
	if (ret) {
		dev_err(&led->client->dev, "Failed programming EEPROM\n");
		goto out;
	}

	return ret;

out:
	if (ret)
		if (led->enable_gpio)
			gpiod_direction_output(led->enable_gpio, 0);

	if (led->regulator) {
		ret = regulator_disable(led->regulator);
		if (ret)
			dev_err(&led->client->dev,
				"Failed to disable regulator\n");
	}

	return ret;
}