Skip to content

Commit

Permalink
leds: lp8860: Update the dt parsing for LED labeling
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dan Murphy authored and Jacek Anaszewski committed Jan 8, 2018
1 parent 9152368 commit c6b218c
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions drivers/leds/leds-lp8860.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <linux/of_gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/slab.h>
#include <uapi/linux/uleds.h>

#define LP8860_DISP_CL1_BRT_MSB 0x00
#define LP8860_DISP_CL1_BRT_LSB 0x01
Expand Down Expand Up @@ -86,8 +87,6 @@

#define LP8860_CLEAR_FAULTS 0x01

#define LP8860_DISP_LED_NAME "display_cluster"

/**
* struct lp8860_led -
* @lock - Lock for reading/writing the device
Expand All @@ -107,7 +106,7 @@ struct lp8860_led {
struct regmap *eeprom_regmap;
struct gpio_desc *enable_gpio;
struct regulator *regulator;
const char *label;
char label[LED_MAX_NAME_SIZE];
};

struct lp8860_eeprom_reg {
Expand Down Expand Up @@ -387,19 +386,21 @@ static int lp8860_probe(struct i2c_client *client,
int ret;
struct lp8860_led *led;
struct device_node *np = client->dev.of_node;
struct device_node *child_node;
const char *name;

led = devm_kzalloc(&client->dev, sizeof(*led), GFP_KERNEL);
if (!led)
return -ENOMEM;

led->label = LP8860_DISP_LED_NAME;

if (client->dev.of_node) {
ret = of_property_read_string(np, "label", &led->label);
if (ret) {
dev_err(&client->dev, "Missing label in dt\n");
return -EINVAL;
}
for_each_available_child_of_node(np, child_node) {
ret = of_property_read_string(child_node, "label", &name);
if (!ret)
snprintf(led->label, sizeof(led->label), "%s:%s",
id->name, name);
else
snprintf(led->label, sizeof(led->label),
"%s::display_cluster", id->name);
}

led->enable_gpio = devm_gpiod_get_optional(&client->dev,
Expand Down

0 comments on commit c6b218c

Please sign in to comment.