mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 09:43:59 +08:00
leds: lm3692x: Use generic support for composing LED names
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> Tested-by: Dan Murphy <dmurphy@ti.com> Acked-by: Pavel Machek <pavel@ucw.cz>
This commit is contained in:
parent
4dcbc8f8c5
commit
a50ff28348
@ -13,7 +13,6 @@
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/slab.h>
|
||||
#include <uapi/linux/uleds.h>
|
||||
|
||||
#define LM36922_MODEL 0
|
||||
#define LM36923_MODEL 1
|
||||
@ -103,7 +102,6 @@
|
||||
* @regmap - Devices register map
|
||||
* @enable_gpio - VDDIO/EN gpio to enable communication interface
|
||||
* @regulator - LED supply regulator pointer
|
||||
* @label - LED label
|
||||
* @led_enable - LED sync to be enabled
|
||||
* @model_id - Current device model ID enumerated
|
||||
*/
|
||||
@ -114,7 +112,6 @@ struct lm3692x_led {
|
||||
struct regmap *regmap;
|
||||
struct gpio_desc *enable_gpio;
|
||||
struct regulator *regulator;
|
||||
char label[LED_MAX_NAME_SIZE];
|
||||
int led_enable;
|
||||
int model_id;
|
||||
};
|
||||
@ -325,7 +322,7 @@ out:
|
||||
static int lm3692x_probe_dt(struct lm3692x_led *led)
|
||||
{
|
||||
struct fwnode_handle *child = NULL;
|
||||
const char *name;
|
||||
struct led_init_data init_data = {};
|
||||
int ret;
|
||||
|
||||
led->enable_gpio = devm_gpiod_get_optional(&led->client->dev,
|
||||
@ -350,30 +347,23 @@ static int lm3692x_probe_dt(struct lm3692x_led *led)
|
||||
fwnode_property_read_string(child, "linux,default-trigger",
|
||||
&led->led_dev.default_trigger);
|
||||
|
||||
ret = fwnode_property_read_string(child, "label", &name);
|
||||
if (ret)
|
||||
snprintf(led->label, sizeof(led->label),
|
||||
"%s::", led->client->name);
|
||||
else
|
||||
snprintf(led->label, sizeof(led->label),
|
||||
"%s:%s", led->client->name, name);
|
||||
|
||||
ret = fwnode_property_read_u32(child, "reg", &led->led_enable);
|
||||
if (ret) {
|
||||
dev_err(&led->client->dev, "reg DT property missing\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
led->led_dev.name = led->label;
|
||||
init_data.fwnode = child;
|
||||
init_data.devicename = led->client->name;
|
||||
init_data.default_label = ":";
|
||||
|
||||
ret = devm_led_classdev_register(&led->client->dev, &led->led_dev);
|
||||
ret = devm_led_classdev_register_ext(&led->client->dev, &led->led_dev,
|
||||
&init_data);
|
||||
if (ret) {
|
||||
dev_err(&led->client->dev, "led register err: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
led->led_dev.dev->of_node = to_of_node(child);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user