* [PATCH V2 0/2] leds: rgb: leds-group-multicolor: Implement default-intensity @ 2026-08-02 11:57 Stefan Wahren 2026-08-02 11:57 ` [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity Stefan Wahren 2026-08-02 11:57 ` [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren 0 siblings, 2 replies; 5+ messages in thread From: Stefan Wahren @ 2026-08-02 11:57 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jean-Jacques Hiblot Cc: Jonas Rebmann, linux-leds, devicetree, linux-kernel, Stefan Wahren Currently it's not possible to specify the initial color of a LED multicolor group during boot. This series is the replacement for the recent series "leds: rgb: leds-group-multicolor: Introduce default-intensity" [1]. Changes in V2: - adapt to approach (incl. error behavior) by Jonas Rebmann [2] - address comments by Lee which still apply [1] - https://lore.kernel.org/linux-leds/20260708224652.106632-1-wahrenst@gmx.net/ [2] - https://lore.kernel.org/linux-leds/20260605-multicolor-default-v2-0-ed07271df6b0@pengutronix.de/ Stefan Wahren (2): dt-bindings: leds-group-multicolor: Enable default-intensity leds: rgb: leds-group-multicolor: Implement default-intensity .../bindings/leds/leds-group-multicolor.yaml | 2 ++ drivers/leds/rgb/leds-group-multicolor.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) -- 2.43.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity 2026-08-02 11:57 [PATCH V2 0/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren @ 2026-08-02 11:57 ` Stefan Wahren 2026-08-02 12:09 ` sashiko-bot 2026-08-02 11:57 ` [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren 1 sibling, 1 reply; 5+ messages in thread From: Stefan Wahren @ 2026-08-02 11:57 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jean-Jacques Hiblot Cc: Jonas Rebmann, linux-leds, devicetree, linux-kernel, Stefan Wahren Since commit 2ebd1cb772b0 ("dt-bindings: leds: Add default-intensity property") there is a property to specify the default color on multicolor LEDs. This is also helpful for leds-group-multicolor, so enable it. Signed-off-by: Stefan Wahren <wahrenst@gmx.net> --- .../devicetree/bindings/leds/leds-group-multicolor.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml index 5c9cfa39396b..1f308cdb71c8 100644 --- a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml +++ b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml @@ -19,6 +19,8 @@ properties: leds: true + default-intensity: true + required: - leds -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity 2026-08-02 11:57 ` [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity Stefan Wahren @ 2026-08-02 12:09 ` sashiko-bot 0 siblings, 0 replies; 5+ messages in thread From: sashiko-bot @ 2026-08-02 12:09 UTC (permalink / raw) To: Stefan Wahren; +Cc: conor+dt, devicetree, linux-leds, lee, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The scalar `default-intensity` property is structurally misapplied to the top-level multi-color parent node instead of the individual monochromatic sub-LED nodes. -- --- Patch [1]: [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity --- commit bf29f5ac49b0a3cb58ee37092ceaf9652d2451d0 Author: Stefan Wahren <wahrenst@gmx.net> dt-bindings: leds-group-multicolor: Enable default-intensity This commit updates the leds-group-multicolor binding to allow the default-intensity property on the top-level multicolor LED node. > diff --git a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml > index 5c9cfa39396b0..1f308cdb71c86 100644 > --- a/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml > +++ b/Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml > @@ -19,6 +19,8 @@ properties: > > leds: true > > + default-intensity: true > + [Severity: Medium] Does this misapply the scalar default-intensity property to the top-level multicolor parent node? Because default-intensity is defined as a scalar uint32 type in common.yaml, placing it on a multicolor aggregate node prevents it from conveying the per-color-component intensity values required to define a default color mix. If a developer attempts to define a mix using an array (e.g. <255 128 0>), schema validation will fail due to the scalar type constraint. Would it be more appropriate to apply this property exclusively to the referenced monochromatic sub-LED nodes (e.g. gpio-leds), which already inherit this property, rather than the parent group? > required: > - leds -- Sashiko AI review · https://sashiko.dev/#/patchset/20260802115727.50411-1-wahrenst@gmx.net?part=1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity 2026-08-02 11:57 [PATCH V2 0/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren 2026-08-02 11:57 ` [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity Stefan Wahren @ 2026-08-02 11:57 ` Stefan Wahren 2026-08-02 12:11 ` sashiko-bot 1 sibling, 1 reply; 5+ messages in thread From: Stefan Wahren @ 2026-08-02 11:57 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jean-Jacques Hiblot Cc: Jonas Rebmann, linux-leds, devicetree, linux-kernel, Stefan Wahren Currently it's not possible to specify the initial color of a LED multicolor group during boot. So implement the default-intensity property similar to the leds-pwm-multicolor driver. In case the property is missing, the old behavior is kept. Signed-off-by: Stefan Wahren <wahrenst@gmx.net> --- drivers/leds/rgb/leds-group-multicolor.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/leds/rgb/leds-group-multicolor.c b/drivers/leds/rgb/leds-group-multicolor.c index 548c7dd63ba1..69b203ec89fa 100644 --- a/drivers/leds/rgb/leds-group-multicolor.c +++ b/drivers/leds/rgb/leds-group-multicolor.c @@ -109,8 +109,14 @@ static int leds_gmc_probe(struct platform_device *pdev) subled[i].color_index = led_cdev->color; - /* Configure the LED intensity to its maximum */ - subled[i].intensity = max_brightness; + ret = fwnode_property_read_u32(led_cdev->dev->fwnode, "default-intensity", + &subled[i].intensity); + + /* In case default-intensity is missing, fallback to maximum */ + if (ret) + subled[i].intensity = max_brightness; + else if (subled[i].intensity > max_brightness) + subled[i].intensity = max_brightness; } /* Initialise the multicolor's LED class device */ -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity 2026-08-02 11:57 ` [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren @ 2026-08-02 12:11 ` sashiko-bot 0 siblings, 0 replies; 5+ messages in thread From: sashiko-bot @ 2026-08-02 12:11 UTC (permalink / raw) To: Stefan Wahren; +Cc: robh, conor+dt, linux-leds, lee, devicetree Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: New issues: - [Medium] Device Tree Binding & Implementation Mismatch for `default-intensity` Pre-existing issues: - [High] 32-bit unsigned integer overflow and potential division by zero in brightness scaling calculation -- --- Patch [2]: [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity --- commit 3299ece4693e9a064de7eb3b6ca548536d4ca2ef Author: Stefan Wahren <wahrenst@gmx.net> leds: rgb: leds-group-multicolor: Implement default-intensity Currently it is not possible to specify the initial color of a LED multicolor group during boot. This commit implements the default-intensity property similar to the leds-pwm-multicolor driver, falling back to the maximum intensity if the property is missing. > diff --git a/drivers/leds/rgb/leds-group-multicolor.c b/drivers/leds/rgb/leds-group-multicolor.c > index a707d51c6a4bd..f0e6c2a25a070 100644 > --- a/drivers/leds/rgb/leds-group-multicolor.c > +++ b/drivers/leds/rgb/leds-group-multicolor.c > @@ -108,8 +108,14 @@ static int leds_gmc_probe(struct platform_device *pdev) > > subled[i].color_index = led_cdev->color; > > - /* Configure the LED intensity to its maximum */ > - subled[i].intensity = max_brightness; > + ret = fwnode_property_read_u32(led_cdev->dev->fwnode, "default-intensity", > + &subled[i].intensity); [Severity: Medium] Will this parse the default-intensity property from the correct node? Based on the device tree binding documentation for leds-group-multicolor, the default-intensity property is expected to be located in the parent multicolor group node. However, in leds_gmc_probe(), the driver attempts to read it from the monochromatic sub-LED fwnode instead: ret = fwnode_property_read_u32(led_cdev->dev->fwnode, "default-intensity", &subled[i].intensity); Does this code ignore valid configurations where the property is placed in the parent node according to the schema? > + > + /* In case default-intensity is missing, fallback to maximum */ > + if (ret) > + subled[i].intensity = max_brightness; > + else if (subled[i].intensity > max_brightness) > + subled[i].intensity = max_brightness; > } > > /* Initialise the multicolor's LED class device */ [Severity: High] This is a pre-existing issue, but is there a potential integer overflow and division by zero when scaling brightness in leds_gmc_set()? When leds_gmc_set() calculates the brightness for the monochromatic sub-LEDs, it uses 32-bit unsigned arithmetic: drivers/leds/rgb/leds-group-multicolor.c:leds_gmc_set() { ... mono_brightness = DIV_ROUND_CLOSEST(brightness * intensity * mono_max_brightness, group_max_brightness * group_max_brightness); ... } If the underlying LEDs have high max_brightness values configured (for example, 65535 for a PWM period), the numerator can wrap around, resulting in a calculated brightness of 0. Furthermore, if group_max_brightness happens to be exactly 65536, the denominator overflows to exactly 0, which would lead to a division by zero panic during brightness adjustment. Could this arithmetic be adjusted to prevent overflows with high brightness values? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260802115727.50411-1-wahrenst@gmx.net?part=2 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-02 12:11 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-02 11:57 [PATCH V2 0/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren 2026-08-02 11:57 ` [PATCH V2 1/2] dt-bindings: leds-group-multicolor: Enable default-intensity Stefan Wahren 2026-08-02 12:09 ` sashiko-bot 2026-08-02 11:57 ` [PATCH V2 2/2] leds: rgb: leds-group-multicolor: Implement default-intensity Stefan Wahren 2026-08-02 12:11 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox