Thread (11 messages) 11 messages, 3 authors, 2026-01-08

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

From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Date: 2026-01-06 12:03:23
Also in: linux-leds, lkml

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

Signed-off-by: Edelweise Escala <redacted>
---
  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@vger.kernel.org
  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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help