aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/leds/leds-lp8860.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
index f91a4fe25168..1ab5e19c3509 100644
--- a/drivers/leds/leds-lp8860.c
+++ b/drivers/leds/leds-lp8860.c
@@ -22,6 +22,7 @@
22#include <linux/of_gpio.h> 22#include <linux/of_gpio.h>
23#include <linux/gpio/consumer.h> 23#include <linux/gpio/consumer.h>
24#include <linux/slab.h> 24#include <linux/slab.h>
25#include <uapi/linux/uleds.h>
25 26
26#define LP8860_DISP_CL1_BRT_MSB 0x00 27#define LP8860_DISP_CL1_BRT_MSB 0x00
27#define LP8860_DISP_CL1_BRT_LSB 0x01 28#define LP8860_DISP_CL1_BRT_LSB 0x01
@@ -86,8 +87,6 @@
86 87
87#define LP8860_CLEAR_FAULTS 0x01 88#define LP8860_CLEAR_FAULTS 0x01
88 89
89#define LP8860_DISP_LED_NAME "display_cluster"
90
91/** 90/**
92 * struct lp8860_led - 91 * struct lp8860_led -
93 * @lock - Lock for reading/writing the device 92 * @lock - Lock for reading/writing the device
@@ -107,7 +106,7 @@ struct lp8860_led {
107 struct regmap *eeprom_regmap; 106 struct regmap *eeprom_regmap;
108 struct gpio_desc *enable_gpio; 107 struct gpio_desc *enable_gpio;
109 struct regulator *regulator; 108 struct regulator *regulator;
110 const char *label; 109 char label[LED_MAX_NAME_SIZE];
111}; 110};
112 111
113struct lp8860_eeprom_reg { 112struct lp8860_eeprom_reg {
@@ -387,19 +386,21 @@ static int lp8860_probe(struct i2c_client *client,
387 int ret; 386 int ret;
388 struct lp8860_led *led; 387 struct lp8860_led *led;
389 struct device_node *np = client->dev.of_node; 388 struct device_node *np = client->dev.of_node;
389 struct device_node *child_node;
390 const char *name;
390 391
391 led = devm_kzalloc(&client->dev, sizeof(*led), GFP_KERNEL); 392 led = devm_kzalloc(&client->dev, sizeof(*led), GFP_KERNEL);
392 if (!led) 393 if (!led)
393 return -ENOMEM; 394 return -ENOMEM;
394 395
395 led->label = LP8860_DISP_LED_NAME; 396 for_each_available_child_of_node(np, child_node) {
396 397 ret = of_property_read_string(child_node, "label", &name);
397 if (client->dev.of_node) { 398 if (!ret)
398 ret = of_property_read_string(np, "label", &led->label); 399 snprintf(led->label, sizeof(led->label), "%s:%s",
399 if (ret) { 400 id->name, name);
400 dev_err(&client->dev, "Missing label in dt\n"); 401 else
401 return -EINVAL; 402 snprintf(led->label, sizeof(led->label),
402 } 403 "%s::display_cluster", id->name);
403 } 404 }
404 405
405 led->enable_gpio = devm_gpiod_get_optional(&client->dev, 406 led->enable_gpio = devm_gpiod_get_optional(&client->dev,