diff options
author | Simon Arlott <simon@fire.lp0.eu> | 2015-11-16 20:24:59 +0000 |
---|---|---|
committer | Jacek Anaszewski <j.anaszewski@samsung.com> | 2016-01-04 09:57:37 +0100 |
commit | 9d3c0663df338357625e75e7bead3322f083778b (patch) | |
tree | a451cdf64ec1f41f1b28654546e18947a02acbd9 /drivers/leds/leds-bcm6328.c | |
parent | c29e650b3af272bedddc6c032148935e6f200cb7 (diff) | |
download | lwn-9d3c0663df338357625e75e7bead3322f083778b.tar.gz lwn-9d3c0663df338357625e75e7bead3322f083778b.zip |
leds: bcm6328: Reuse bcm6328_led_set() instead of copying its functionality
When ensuring a consistent initial LED state in bcm6328_led (as they may
be blinking instead of on/off), the LED register is set using an inverted
copy of bcm6328_led_set(). To avoid further errors relating to active low
handling, call this function directly instead.
As bcm6328_led_set() acquires the same spinlock again when updating the
register, it is called after unlocking.
Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Diffstat (limited to 'drivers/leds/leds-bcm6328.c')
-rw-r--r-- | drivers/leds/leds-bcm6328.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/leds/leds-bcm6328.c b/drivers/leds/leds-bcm6328.c index c7ea5c626331..95d0cf94089b 100644 --- a/drivers/leds/leds-bcm6328.c +++ b/drivers/leds/leds-bcm6328.c @@ -314,14 +314,10 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg, } else { led->cdev.brightness = LED_OFF; } - - if ((led->active_low && led->cdev.brightness == LED_FULL) || - (!led->active_low && led->cdev.brightness == LED_OFF)) - bcm6328_led_mode(led, BCM6328_LED_MODE_ON); - else - bcm6328_led_mode(led, BCM6328_LED_MODE_OFF); spin_unlock_irqrestore(lock, flags); + bcm6328_led_set(&led->cdev, led->cdev.brightness); + led->cdev.brightness_set = bcm6328_led_set; led->cdev.blink_set = bcm6328_blink_set; |