Skip to content

Commit e41ff81

Browse files
andy-shevlag-linaro
authored andcommitted
leds: bcm6358: Get rid of custom led_init_default_state_get()
LED core provides a helper to parse default state from firmware node. Use it instead of custom implementation. Signed-off-by: Andy Shevchenko <[email protected]> Reviewed-by: Florian Fainelli <[email protected]> Signed-off-by: Lee Jones <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 67d162e commit e41ff81

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

drivers/leds/leds-bcm6358.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg,
9696
{
9797
struct led_init_data init_data = {};
9898
struct bcm6358_led *led;
99-
const char *state;
99+
enum led_default_state state;
100+
unsigned long val;
100101
int rc;
101102

102103
led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL);
@@ -110,29 +111,28 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg,
110111
if (of_property_read_bool(nc, "active-low"))
111112
led->active_low = true;
112113

113-
if (!of_property_read_string(nc, "default-state", &state)) {
114-
if (!strcmp(state, "on")) {
114+
init_data.fwnode = of_fwnode_handle(nc);
115+
116+
state = led_init_default_state_get(init_data.fwnode);
117+
switch (state) {
118+
case LEDS_DEFSTATE_ON:
119+
led->cdev.brightness = LED_FULL;
120+
break;
121+
case LEDS_DEFSTATE_KEEP:
122+
val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
123+
val &= BIT(led->pin);
124+
if ((led->active_low && !val) || (!led->active_low && val))
115125
led->cdev.brightness = LED_FULL;
116-
} else if (!strcmp(state, "keep")) {
117-
unsigned long val;
118-
val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
119-
val &= BIT(led->pin);
120-
if ((led->active_low && !val) ||
121-
(!led->active_low && val))
122-
led->cdev.brightness = LED_FULL;
123-
else
124-
led->cdev.brightness = LED_OFF;
125-
} else {
126+
else
126127
led->cdev.brightness = LED_OFF;
127-
}
128-
} else {
128+
break;
129+
default:
129130
led->cdev.brightness = LED_OFF;
130131
}
131132

132133
bcm6358_led_set(&led->cdev, led->cdev.brightness);
133134

134135
led->cdev.brightness_set = bcm6358_led_set;
135-
init_data.fwnode = of_fwnode_handle(nc);
136136

137137
rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
138138
if (rc < 0)

0 commit comments

Comments
 (0)