leds: lm3692x: Split out lm3692x_leds_disable
[linux-2.6-microblaze.git] / drivers / leds / leds-lm3692x.c
index f7fdfae..1254695 100644 (file)
@@ -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);
+       ret = lm3692x_leds_disable(led);
+       if (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);
-       }
-
        mutex_destroy(&led->lock);
 
        return 0;