]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
leds: leds-cros_ec: Skip LEDs without color components
authorThomas Weißschuh <linux@weissschuh.net>
Tue, 28 Oct 2025 15:31:03 +0000 (16:31 +0100)
committerLee Jones <lee@kernel.org>
Thu, 6 Nov 2025 16:52:36 +0000 (16:52 +0000)
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>
drivers/leds/leds-cros_ec.c

index 377cf04e202a1e49e1c20445dc1f03a48e005a17..bea3cc3fbfd2d4881e986a150facbf2b3b426a0a 100644 (file)
@@ -142,9 +142,6 @@ static int cros_ec_led_count_subleds(struct device *dev,
                }
        }
 
-       if (!num_subleds)
-               return -EINVAL;
-
        *max_brightness = common_range;
        return num_subleds;
 }
@@ -189,6 +186,8 @@ static int cros_ec_led_probe_one(struct device *dev, struct cros_ec_device *cros
                                                &priv->led_mc_cdev.led_cdev.max_brightness);
        if (num_subleds < 0)
                return num_subleds;
+       if (num_subleds == 0)
+               return 0; /* LED without any colors, skip */
 
        priv->cros_ec = cros_ec;
        priv->led_id = id;