Re: [PATCH 2/2] leds: ltc3220: add driver

From: Jacek Anaszewski

Date: Tue Jan 06 2026 - 07:03:23 EST


On 1/6/26 06:27, Edelweise Escala wrote:
Add driver for ltc3220. LTC3220 18 Channel LED Driver

Signed-off-by: Edelweise Escala <edelweise.escala@xxxxxxxxxx>
---
MAINTAINERS | 1 +
drivers/leds/Kconfig | 10 +
drivers/leds/Makefile | 1 +
drivers/leds/leds-ltc3220.c | 465 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 477 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index d640c35d1f93..fda0d2963c4f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14961,6 +14961,7 @@ L: linux-leds@xxxxxxxxxxxxxxx
S: Maintained
W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/leds/leds-ltc3220.yaml
+F: drivers/leds/leds-ltc3220.c
[...]
+ "Failed to set command\n");
+
+ device_for_each_child_node_scoped(&client->dev, child) {
+ struct led_init_data init_data = {};
+ struct ltc3220_uled_cfg *led;
+ u32 source;
+
+ ret = fwnode_property_read_u32(child, "reg", &source);
+ if (ret)
+ return dev_err_probe(&client->dev, ret,
+ "Couldn't read LED address\n");
+
+ if (!source || source > LTC3220_NUM_LEDS)
+ return dev_err_probe(&client->dev, -EINVAL,
+ "LED address out of range\n");
+
+ init_data.fwnode = child;
+ init_data.devicename = "ltc3220";
+ init_data.devname_mandatory = true;

Why? Please get acquainted with the section "LED Device Naming" in [0],
and the documentation of this property in [1].

+
+ /* LED node reg/index/address goes from 1 to 18 */
+ i = source - 1;
+ led = &ltc3220_state->uled_cfg[i];
+ led->led_index = i;
+ led->reg_value = 0;
+ led->ltc3220_state = ltc3220_state;
+ led->led_cdev.brightness_set_blocking = ltc3220_set_led_data;
+ led->led_cdev.brightness_get = ltc3220_get_led_data;
+ led->led_cdev.max_brightness = 255;
+ led->led_cdev.blink_set = ltc3220_blink_set;
+ led->led_cdev.pattern_set = ltc3220_pattern_set;
+ led->led_cdev.pattern_clear = ltc3220_pattern_clear;
+
+ ret = devm_led_classdev_register_ext(&client->dev,
+ &led->led_cdev,
+ &init_data);
+ if (ret)
+ return dev_err_probe(&client->dev, ret,
+ "Failed to register LED class device\n");

[0] Documentation/leds/leds-class.rst
[1] include/linux/leds.h

--
Best regards,
Jacek Anaszewski