mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 11:21:33 +00:00
leds: bcm63138: Use scopes and guards
Use scoped helpers and guards to handle DT node iterations and spinlocks. This cuts some lines of code and eliminates common mistakes (such as the missing of_node_put()). Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://lore.kernel.org/r/20241010-bcm63138-leds-v4-2-cdb80780a555@linaro.org Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
d19261ffd0
commit
61574073e1
@ -2,6 +2,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2021 Rafał Miłecki <rafal@milecki.pl>
|
* Copyright (C) 2021 Rafał Miłecki <rafal@milecki.pl>
|
||||||
*/
|
*/
|
||||||
|
#include <linux/cleanup.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
@ -125,17 +126,14 @@ static void bcm63138_leds_brightness_set(struct led_classdev *led_cdev,
|
|||||||
{
|
{
|
||||||
struct bcm63138_led *led = container_of(led_cdev, struct bcm63138_led, cdev);
|
struct bcm63138_led *led = container_of(led_cdev, struct bcm63138_led, cdev);
|
||||||
struct bcm63138_leds *leds = led->leds;
|
struct bcm63138_leds *leds = led->leds;
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&leds->lock, flags);
|
guard(spinlock_irqsave)(&leds->lock);
|
||||||
|
|
||||||
bcm63138_leds_enable_led(leds, led, value);
|
bcm63138_leds_enable_led(leds, led, value);
|
||||||
if (!value)
|
if (!value)
|
||||||
bcm63138_leds_set_flash_rate(leds, led, 0);
|
bcm63138_leds_set_flash_rate(leds, led, 0);
|
||||||
else
|
else
|
||||||
bcm63138_leds_set_bright(leds, led, value);
|
bcm63138_leds_set_bright(leds, led, value);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&leds->lock, flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bcm63138_leds_blink_set(struct led_classdev *led_cdev,
|
static int bcm63138_leds_blink_set(struct led_classdev *led_cdev,
|
||||||
@ -144,7 +142,6 @@ static int bcm63138_leds_blink_set(struct led_classdev *led_cdev,
|
|||||||
{
|
{
|
||||||
struct bcm63138_led *led = container_of(led_cdev, struct bcm63138_led, cdev);
|
struct bcm63138_led *led = container_of(led_cdev, struct bcm63138_led, cdev);
|
||||||
struct bcm63138_leds *leds = led->leds;
|
struct bcm63138_leds *leds = led->leds;
|
||||||
unsigned long flags;
|
|
||||||
u8 value;
|
u8 value;
|
||||||
|
|
||||||
if (!*delay_on && !*delay_off) {
|
if (!*delay_on && !*delay_off) {
|
||||||
@ -179,13 +176,11 @@ static int bcm63138_leds_blink_set(struct led_classdev *led_cdev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&leds->lock, flags);
|
guard(spinlock_irqsave)(&leds->lock);
|
||||||
|
|
||||||
bcm63138_leds_enable_led(leds, led, BCM63138_MAX_BRIGHTNESS);
|
bcm63138_leds_enable_led(leds, led, BCM63138_MAX_BRIGHTNESS);
|
||||||
bcm63138_leds_set_flash_rate(leds, led, value);
|
bcm63138_leds_set_flash_rate(leds, led, value);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&leds->lock, flags);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +254,6 @@ static int bcm63138_leds_probe(struct platform_device *pdev)
|
|||||||
struct device_node *np = dev_of_node(&pdev->dev);
|
struct device_node *np = dev_of_node(&pdev->dev);
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct bcm63138_leds *leds;
|
struct bcm63138_leds *leds;
|
||||||
struct device_node *child;
|
|
||||||
|
|
||||||
leds = devm_kzalloc(dev, sizeof(*leds), GFP_KERNEL);
|
leds = devm_kzalloc(dev, sizeof(*leds), GFP_KERNEL);
|
||||||
if (!leds)
|
if (!leds)
|
||||||
@ -280,7 +274,7 @@ static int bcm63138_leds_probe(struct platform_device *pdev)
|
|||||||
bcm63138_leds_write(leds, BCM63138_SERIAL_LED_POLARITY, 0);
|
bcm63138_leds_write(leds, BCM63138_SERIAL_LED_POLARITY, 0);
|
||||||
bcm63138_leds_write(leds, BCM63138_PARALLEL_LED_POLARITY, 0);
|
bcm63138_leds_write(leds, BCM63138_PARALLEL_LED_POLARITY, 0);
|
||||||
|
|
||||||
for_each_available_child_of_node(np, child) {
|
for_each_available_child_of_node_scoped(np, child) {
|
||||||
bcm63138_leds_create_led(leds, child);
|
bcm63138_leds_create_led(leds, child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user