leds: cr0014114: Use generic support for composing LED names
authorJacek Anaszewski <jacek.anaszewski@gmail.com>
Sun, 9 Jun 2019 18:19:04 +0000 (20:19 +0200)
committerJacek Anaszewski <jacek.anaszewski@gmail.com>
Thu, 25 Jul 2019 18:07:58 +0000 (20:07 +0200)
Switch to using generic LED support for composing LED class
device name.

At this occassion remove initialization of struct led_classdev's
dev->of_node property in the driver, since now it will be taken from
fwnode assigned to struct led_init_data and passed to the new
devm_led_classdev_register_ext() API.

Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: Oleh Kravchenko <oleg@kaa.org.ua>
Acked-by: Pavel Machek <pavel@ucw.cz>
drivers/leds/leds-cr0014114.c

index 1c82152..2da448a 100644 (file)
@@ -8,7 +8,6 @@
 #include <linux/of_device.h>
 #include <linux/spi/spi.h>
 #include <linux/workqueue.h>
-#include <uapi/linux/uleds.h>
 
 /*
  *  CR0014114 SPI protocol descrtiption:
@@ -40,8 +39,9 @@
 #define CR_FW_DELAY_MSEC       10
 #define CR_RECOUNT_DELAY       (HZ * 3600)
 
+#define CR_DEV_NAME            "cr0014114"
+
 struct cr0014114_led {
-       char                    name[LED_MAX_NAME_SIZE];
        struct cr0014114        *priv;
        struct led_classdev     ldev;
        u8                      brightness;
@@ -167,8 +167,7 @@ static int cr0014114_set_sync(struct led_classdev *ldev,
                                                    struct cr0014114_led,
                                                    ldev);
 
-       dev_dbg(led->priv->dev, "Set brightness of %s to %d\n",
-               led->name, brightness);
+       dev_dbg(led->priv->dev, "Set brightness to %d\n", brightness);
 
        mutex_lock(&led->priv->lock);
        led->brightness = (u8)brightness;
@@ -183,41 +182,32 @@ static int cr0014114_probe_dt(struct cr0014114 *priv)
        size_t                  i = 0;
        struct cr0014114_led    *led;
        struct fwnode_handle    *child;
-       struct device_node      *np;
+       struct led_init_data    init_data = {};
        int                     ret;
-       const char              *str;
 
        device_for_each_child_node(priv->dev, child) {
-               np = to_of_node(child);
                led = &priv->leds[i];
 
-               ret = fwnode_property_read_string(child, "label", &str);
-               if (ret)
-                       snprintf(led->name, sizeof(led->name),
-                                "cr0014114::");
-               else
-                       snprintf(led->name, sizeof(led->name),
-                                "cr0014114:%s", str);
-
                fwnode_property_read_string(child, "linux,default-trigger",
                                            &led->ldev.default_trigger);
 
                led->priv                         = priv;
-               led->ldev.name                    = led->name;
                led->ldev.max_brightness          = CR_MAX_BRIGHTNESS;
                led->ldev.brightness_set_blocking = cr0014114_set_sync;
 
-               ret = devm_led_classdev_register(priv->dev, &led->ldev);
+               init_data.fwnode = child;
+               init_data.devicename = CR_DEV_NAME;
+               init_data.default_label = ":";
+
+               ret = devm_led_classdev_register_ext(priv->dev, &led->ldev,
+                                                    &init_data);
                if (ret) {
                        dev_err(priv->dev,
-                               "failed to register LED device %s, err %d",
-                               led->name, ret);
+                               "failed to register LED device, err %d", ret);
                        fwnode_handle_put(child);
                        return ret;
                }
 
-               led->ldev.dev->of_node = np;
-
                i++;
        }