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 = <c3220_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