Commit a50ff283 authored by Jacek Anaszewski's avatar Jacek Anaszewski
Browse files

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: default avatarJacek Anaszewski <jacek.anaszewski@gmail.com>
Tested-by: default avatarDan Murphy <dmurphy@ti.com>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
parent 4dcbc8f8
Loading
Loading
Loading
Loading
+6 −16
Original line number Diff line number Diff line
@@ -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;
}