leds: bcm6328: simplify duplicated unlock in bcm6328_blink_set
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 15 Dec 2015 20:03:51 +0000 (21:03 +0100)
committerJacek Anaszewski <j.anaszewski@samsung.com>
Mon, 4 Jan 2016 08:57:40 +0000 (09:57 +0100)
Instead of duplicating the unlock we can store the return value and use a
single unlock before returning that value, which simplifies the code.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
drivers/leds/leds-bcm6328.c

index e13daa2f31fb730a2fbaf0fbc7242596dd7bd86f..47f7c9f310bea6d4f7c2094c3706a3c9a6f60b2d 100644 (file)
@@ -146,6 +146,7 @@ static int bcm6328_blink_set(struct led_classdev *led_cdev,
        struct bcm6328_led *led =
                container_of(led_cdev, struct bcm6328_led, cdev);
        unsigned long delay, flags;
+       int rc;
 
        if (!*delay_on)
                *delay_on = BCM6328_LED_DEF_DELAY;
@@ -183,16 +184,15 @@ static int bcm6328_blink_set(struct led_classdev *led_cdev,
                bcm6328_led_write(led->mem + BCM6328_REG_INIT, val);
 
                bcm6328_led_mode(led, BCM6328_LED_MODE_BLINK);
-
-               spin_unlock_irqrestore(led->lock, flags);
+               rc = 0;
        } else {
-               spin_unlock_irqrestore(led->lock, flags);
                dev_dbg(led_cdev->dev,
                        "fallback to soft blinking (delay already set)\n");
-               return -EINVAL;
+               rc = -EINVAL;
        }
+       spin_unlock_irqrestore(led->lock, flags);
 
-       return 0;
+       return rc;
 }
 
 static int bcm6328_hwled(struct device *dev, struct device_node *nc, u32 reg,
This page took 0.025952 seconds and 5 git commands to generate.