leds: pwm: check result of led_pwm_set() in led_pwm_add()
authorDenis Osterland-Heim <denis.osterland@diehl.com>
Tue, 21 Apr 2020 13:09:14 +0000 (13:09 +0000)
committerPavel Machek <pavel@ucw.cz>
Mon, 27 Apr 2020 09:35:11 +0000 (11:35 +0200)
led_pwm_set() now returns an error when setting the PWM fails.

Signed-off-by: Denis Osterland-Heim <Denis.Osterland@diehl.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
drivers/leds/leds-pwm.c

index 6c8a724..ef7b91b 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)