From: Lee Jones <lee@kernel.org>
To: Johan Adolfsson <johan.adolfsson@axis.com>
Cc: Pavel Machek <pavel@kernel.org>,
linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@axis.com
Subject: Re: [PATCH RFC] leds: leds-lp50xx: Handle reg to get correct multi_index
Date: Thu, 8 May 2025 15:57:29 +0100 [thread overview]
Message-ID: <20250508145729.GR3865826@google.com> (raw)
In-Reply-To: <20250506-led-fix-v1-1-56a39b55a7fc@axis.com>
On Tue, 06 May 2025, Johan Adolfsson wrote:
> mc_subled used for multi_index needs well defined array indexes,
> to guarantee the desired result, optionally use reg for that.
>
> If devicetree child nodes is processed in random or reverse order
> you may end up with multi_index "blue green red" instead of the expected
> "red green blue".
> If user space apps uses multi_index to deduce how to control the leds
> they would most likely be broken without this patch if devicetree
> processing is reversed (which it appears to be).
>
> arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-fuji.dts has reg set
> but I don't see how it can have worked without this change.
>
> If reg is not set, the previous behavior is kept, index will be in
> the order nodes are processed.
>
> Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com>
> ---
> Since devicetree nodes are (sometimes?) processed in reverse order,
> support reg as the actual multi_index index so yo get well defined
> color order presented in the multi_index file.
> Not sure if reusing reg for this is the correct way or if another
> property such as "multi_index" or similar should be used instead.
> Looks like reg is used for similar things at least.
> Or should the whole "reverse the devicetree" problem be fixed instead?
> ---
> drivers/leds/leds-lp50xx.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/leds/leds-lp50xx.c b/drivers/leds/leds-lp50xx.c
> index 02cb1565a9fb..48db024081f5 100644
> --- a/drivers/leds/leds-lp50xx.c
> +++ b/drivers/leds/leds-lp50xx.c
> @@ -476,6 +476,7 @@ static int lp50xx_probe_dt(struct lp50xx *priv)
> return -ENOMEM;
>
> fwnode_for_each_child_node(child, led_node) {
> + int multi_index = num_colors;
> ret = fwnode_property_read_u32(led_node, "color",
> &color_id);
> if (ret) {
> @@ -483,8 +484,15 @@ static int lp50xx_probe_dt(struct lp50xx *priv)
> dev_err(priv->dev, "Cannot read color\n");
> return ret;
> }
> + ret = fwnode_property_read_u32(led_node, "reg", &multi_index);
> + if (ret) {
> + multi_index = num_colors;
Didn't we already initialise this?
> + } else if (multi_index >= LP50XX_LEDS_PER_MODULE) {
> + dev_warn(priv->dev, "reg %i out of range\n", multi_index);
This should probably fail outright.
> + multi_index = num_colors;
> + }
>
> - mc_led_info[num_colors].color_index = color_id;
> + mc_led_info[multi_index].color_index = color_id;
> num_colors++;
> }
>
>
> ---
> base-commit: 38fec10eb60d687e30c8c6b5420d86e8149f7557
> change-id: 20250225-led-fix-444fb544584a
>
> Best regards,
> --
> Johan Adolfsson <johan.adolfsson@axis.com>
>
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2025-05-08 14:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-06 10:39 [PATCH RFC] leds: leds-lp50xx: Handle reg to get correct multi_index Johan Adolfsson
2025-05-08 14:57 ` Lee Jones [this message]
2025-05-10 15:32 ` Jacek Anaszewski
2025-05-12 10:59 ` Johan Adolfsson
2025-05-12 18:10 ` Jacek Anaszewski
2025-05-13 13:04 ` Johan Adolfsson
2025-05-13 19:50 ` Jacek Anaszewski
2025-05-14 14:41 ` Johan Adolfsson
2025-05-13 19:52 ` Jacek Anaszewski
2025-05-14 14:34 ` Johan Adolfsson
2025-05-14 19:55 ` Jacek Anaszewski
2025-05-15 7:36 ` Johan Adolfsson
2025-05-18 15:16 ` Jacek Anaszewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250508145729.GR3865826@google.com \
--to=lee@kernel.org \
--cc=johan.adolfsson@axis.com \
--cc=kernel@axis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=pavel@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox