Commit 4a8d2bee authored by Guido Günther's avatar Guido Günther Committed by Pavel
Browse files

leds: lm3692x: Split out lm3692x_leds_disable



Move the relevant parts out of lm3692x_remove() and call it from
there. No functional change.

Signed-off-by: default avatarGuido Günther <agx@sigxcpu.org>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
parent 5e9d7b6f
Loading
Loading
Loading
Loading
+26 −16
Original line number Diff line number Diff line
@@ -289,6 +289,30 @@ out:
	return ret;
}

static int lm3692x_leds_disable(struct lm3692x_led *led)
{
	int ret;

	ret = regmap_update_bits(led->regmap, LM3692X_EN, LM3692X_DEVICE_EN, 0);
	if (ret) {
		dev_err(&led->client->dev, "Failed to disable regulator: %d\n",
			ret);
		return 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: %d\n", ret);
	}

	return ret;
}

static int lm3692x_brightness_set(struct led_classdev *led_cdev,
				enum led_brightness brt_val)
{
@@ -463,23 +487,9 @@ static int lm3692x_remove(struct i2c_client *client)
	struct lm3692x_led *led = i2c_get_clientdata(client);
	int ret;

	ret = regmap_update_bits(led->regmap, LM3692X_EN, LM3692X_DEVICE_EN, 0);
	if (ret) {
		dev_err(&led->client->dev, "Failed to disable regulator: %d\n",
			ret);
		return ret;
	}

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

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

		return ret;
	mutex_destroy(&led->lock);

	return 0;