Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <andriy.shevchenko@linux.intel.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230103131256.33894-6-andriy.shevchenko@linux.intel.com

authored by

Andy Shevchenko and committed by
Lee Jones
e41ff817 67d162e8

+16 -16
+16 -16
drivers/leds/leds-bcm6358.c
··· 96 96 { 97 97 struct led_init_data init_data = {}; 98 98 struct bcm6358_led *led; 99 - const char *state; 99 + enum led_default_state state; 100 + unsigned long val; 100 101 int rc; 101 102 102 103 led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); ··· 111 110 if (of_property_read_bool(nc, "active-low")) 112 111 led->active_low = true; 113 112 114 - if (!of_property_read_string(nc, "default-state", &state)) { 115 - if (!strcmp(state, "on")) { 113 + init_data.fwnode = of_fwnode_handle(nc); 114 + 115 + state = led_init_default_state_get(init_data.fwnode); 116 + switch (state) { 117 + case LEDS_DEFSTATE_ON: 118 + led->cdev.brightness = LED_FULL; 119 + break; 120 + case LEDS_DEFSTATE_KEEP: 121 + val = bcm6358_led_read(led->mem + BCM6358_REG_MODE); 122 + val &= BIT(led->pin); 123 + if ((led->active_low && !val) || (!led->active_low && val)) 116 124 led->cdev.brightness = LED_FULL; 117 - } else if (!strcmp(state, "keep")) { 118 - unsigned long val; 119 - val = bcm6358_led_read(led->mem + BCM6358_REG_MODE); 120 - val &= BIT(led->pin); 121 - if ((led->active_low && !val) || 122 - (!led->active_low && val)) 123 - led->cdev.brightness = LED_FULL; 124 - else 125 - led->cdev.brightness = LED_OFF; 126 - } else { 125 + else 127 126 led->cdev.brightness = LED_OFF; 128 - } 129 - } else { 127 + break; 128 + default: 130 129 led->cdev.brightness = LED_OFF; 131 130 } 132 131 133 132 bcm6358_led_set(&led->cdev, led->cdev.brightness); 134 133 135 134 led->cdev.brightness_set = bcm6358_led_set; 136 - init_data.fwnode = of_fwnode_handle(nc); 137 135 138 136 rc = devm_led_classdev_register_ext(dev, &led->cdev, &init_data); 139 137 if (rc < 0)