diff options
| -rw-r--r-- | drivers/leds/leds-lp8860.c | 23 |
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 | ||
| 113 | struct lp8860_eeprom_reg { | 112 | struct 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, |
