Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: leds-cros_ec: Skip LEDs without color components

A user reports that on their Lenovo Corsola Magneton with EC firmware
steelix-15194.270.0 the driver probe fails with EINVAL. It turns out
that the power LED does not contain any color components as indicated
by the following "ectool led power query" output:

Brightness range for LED 1:
red : 0x0
green : 0x0
blue : 0x0
yellow : 0x0
white : 0x0
amber : 0x0

The LED also does not react to commands sent manually through ectool and
is generally non-functional.

Instead of failing the probe for all LEDs managed by the EC when one
without color components is encountered, silently skip those.

Cc: stable@vger.kernel.org
Fixes: 8d6ce6f3ec9d ("leds: Add ChromeOS EC driver")
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://patch.msgid.link/20251028-cros_ec-leds-no-colors-v1-1-ebe13a02022a@weissschuh.net
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Thomas Weißschuh and committed by
Lee Jones
4dbf066d 5246e367

+2 -3
+2 -3
drivers/leds/leds-cros_ec.c
··· 142 142 } 143 143 } 144 144 145 - if (!num_subleds) 146 - return -EINVAL; 147 - 148 145 *max_brightness = common_range; 149 146 return num_subleds; 150 147 } ··· 186 189 &priv->led_mc_cdev.led_cdev.max_brightness); 187 190 if (num_subleds < 0) 188 191 return num_subleds; 192 + if (num_subleds == 0) 193 + return 0; /* LED without any colors, skip */ 189 194 190 195 priv->cros_ec = cros_ec; 191 196 priv->led_id = id;