Re: [PATCH v9] leds: add support for TI LP5860 LED driver chip

From: Christophe JAILLET

Date: Sun Apr 26 2026 - 16:38:35 EST


Le 24/04/2026 à 15:28, Steffen Trumtrar a écrit :
Add support for the Texas Instruments LP5860 LED driver chip
via SPI interfaces.

The LP5860 is an LED matrix driver for up to 196 LEDs, which supports
short and open detection of the individual channel select lines.

It can be connected to SPI or I2C bus. For now add support for SPI only.

Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>
---

Hi,

+static int lp5860_init_dt(struct lp5860 *lp)
+{
+ struct led_init_data init_data = {};
+ struct led_classdev *led_cdev;
+ struct mc_subled *mc_led_info;
+ struct lp5860_led *led;
+ int led_index = 0;
+ int chan;
+ int ret;
+
+ device_for_each_child_node_scoped(lp->dev, multi_led) {
+ led = &lp->leds[led_index];
+
+ init_data.fwnode = multi_led;
+
+ /* Count the number of channels in this multi_led */
+ chan = fwnode_get_child_node_count(multi_led);
+ if (!chan || chan > LP5860_MAX_LED_CHANNELS)
+ return -EINVAL;
+
+ led->mc_cdev.num_colors = chan;
+
+ mc_led_info = devm_kcalloc(lp->dev, chan, sizeof(*mc_led_info), GFP_KERNEL);
+ if (!mc_led_info)
+ return -ENOMEM;
+
+ led->chip = lp;
+ led->mc_cdev.subled_info = mc_led_info;
+ led_cdev = &led->mc_cdev.led_cdev;
+ led_cdev->max_brightness = LP5860_MAX_BRIGHTNESS;
+ led_cdev->brightness_set_blocking = lp5860_set_mc_brightness;
+
+ ret = lp5860_iterate_subleds(led, &init_data);
+ if (ret)
+ continue;
+
+ ret = lp5860_set_mc_brightness(&led->mc_cdev.led_cdev, led->brightness);
+ if (ret) {
+ dev_err_probe(lp->dev, ret, "%pfwP: Failed to set Multi-Color brightness\n",
+ multi_led);
+ return ret;

This could be return dev_err_probe();
This is slightly less verbose and saves the { }

+ }
+
+ ret = devm_led_classdev_multicolor_register_ext(lp->dev, &led->mc_cdev, &init_data);
+ if (ret) {
+ dev_err_probe(lp->dev, ret, "%pfwP: Failed to register Multi-Color LEDs\n",
+ multi_led);
+ return ret;

This could be return dev_err_probe();
This is slightly less verbose and saves the { }

+ }
+ led_index++;
+ }
+
+ return 0;
+}