leds: pwm: check result of led_pwm_set() in led_pwm_add()
[sfrench/cifs-2.6.git] / drivers / leds / leds-pwm.c
index 6c8a724aac51b52dba6468ce0554046ba7101bc4..ef7b91bd2064f40401142c3f7bb252c929631c00 100644 (file)
@@ -91,15 +91,21 @@ static int led_pwm_add(struct device *dev, struct led_pwm_priv *priv,
        pwm_init_state(led_data->pwm, &led_data->pwmstate);
 
        ret = devm_led_classdev_register(dev, &led_data->cdev);
-       if (ret == 0) {
-               priv->num_leds++;
-               led_pwm_set(&led_data->cdev, led_data->cdev.brightness);
-       } else {
+       if (ret) {
                dev_err(dev, "failed to register PWM led for %s: %d\n",
                        led->name, ret);
+               return ret;
        }
 
-       return ret;
+       ret = led_pwm_set(&led_data->cdev, led_data->cdev.brightness);
+       if (ret) {
+               dev_err(dev, "failed to set led PWM value for %s: %d",
+                       led->name, ret);
+               return ret;
+       }
+
+       priv->num_leds++;
+       return 0;
 }
 
 static int led_pwm_create_fwnode(struct device *dev, struct led_pwm_priv *priv)