leds: pm8058: Get rid of custom led_init_default_state_get()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 3 Jan 2023 13:12:54 +0000 (15:12 +0200)
committerLee Jones <lee@kernel.org>
Mon, 30 Jan 2023 08:03:41 +0000 (08:03 +0000)
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>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230103131256.33894-10-andriy.shevchenko@linux.intel.com
drivers/leds/leds-pm8058.c

index fb2ab72c0c40c78b812e3b5658862bfb3e227e55..b9233f14b6467e26d389c0c87ea3901d5b3ab680 100644 (file)
@@ -93,8 +93,8 @@ static int pm8058_led_probe(struct platform_device *pdev)
        struct device_node *np;
        int ret;
        struct regmap *map;
-       const char *state;
        enum led_brightness maxbright;
+       enum led_default_state state;
 
        led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL);
        if (!led)
@@ -125,25 +125,26 @@ static int pm8058_led_probe(struct platform_device *pdev)
                maxbright = 15; /* 4 bits */
        led->cdev.max_brightness = maxbright;
 
-       state = of_get_property(np, "default-state", NULL);
-       if (state) {
-               if (!strcmp(state, "keep")) {
-                       led->cdev.brightness = pm8058_led_get(&led->cdev);
-               } else if (!strcmp(state, "on")) {
-                       led->cdev.brightness = maxbright;
-                       pm8058_led_set(&led->cdev, maxbright);
-               } else {
-                       led->cdev.brightness = LED_OFF;
-                       pm8058_led_set(&led->cdev, LED_OFF);
-               }
+       init_data.fwnode = of_fwnode_handle(np);
+
+       state = led_init_default_state_get(init_data.fwnode);
+       switch (state) {
+       case LEDS_DEFSTATE_ON:
+               led->cdev.brightness = maxbright;
+               pm8058_led_set(&led->cdev, maxbright);
+               break;
+       case LEDS_DEFSTATE_KEEP:
+               led->cdev.brightness = pm8058_led_get(&led->cdev);
+               break;
+       default:
+               led->cdev.brightness = LED_OFF;
+               pm8058_led_set(&led->cdev, LED_OFF);
        }
 
        if (led->ledtype == PM8058_LED_TYPE_KEYPAD ||
            led->ledtype == PM8058_LED_TYPE_FLASH)
                led->cdev.flags = LED_CORE_SUSPENDRESUME;
 
-       init_data.fwnode = of_fwnode_handle(np);
-
        ret = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
        if (ret)
                dev_err(dev, "Failed to register LED for %pOF\n", np);