aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2017-12-18 15:23:04 -0500
committerJacek Anaszewski <jacek.anaszewski@gmail.com>2018-01-08 15:28:11 -0500
commitc6b218c9c0d686486dcc39a1d80aff90801ca6fc (patch)
treee71c4c5ee0f3b69670480a23f003f78bd3d71f0c
parent915236838988a927e405058a86b7857a984d33d4 (diff)
leds: lp8860: Update the dt parsing for LED labeling
Update the DT parsing for the label node so that the label is retrieved from the device child as opposed to being part of the parent. This will align this driver with the LED binding documentation Documentation/devicetree/bindings/leds/common.txt Signed-off-by: Dan Murphy <dmurphy@ti.com> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
-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,