* [PATCH RFC v3 0/2] leds-lp50xx: Support reg to set multi_index. @ 2025-05-23 15:26 Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 1/2] leds: leds-lp50xx: Handle reg to get correct multi_index Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example Johan Adolfsson 0 siblings, 2 replies; 4+ messages in thread From: Johan Adolfsson @ 2025-05-23 15:26 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Andrew Davis, Jacek Anaszewski Cc: linux-leds, linux-kernel, devicetree, Johan Adolfsson, kernel 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? Update bindings to match implementation, and add description for the reg property. Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com> --- Changes in v3: - Update To and Cc. - Rephrase bindings descriptions, add constraints. - Link to v2: https://lore.kernel.org/r/20250522-led-fix-v2-0-652046323ec3@axis.com Changes in v2: - Avoid duplicate assignment. dev_err and return -EINVAL on error. - Update bindings doc. - Link to v1: https://lore.kernel.org/r/20250506-led-fix-v1-1-56a39b55a7fc@axis.com --- Johan Adolfsson (2): leds: leds-lp50xx: Handle reg to get correct multi_index dt-bindings: leds: lp50xx: Document child reg, fix example .../devicetree/bindings/leds/leds-lp50xx.yaml | 18 ++++++++++++------ drivers/leds/leds-lp50xx.c | 8 +++++++- 2 files changed, 19 insertions(+), 7 deletions(-) --- base-commit: 38fec10eb60d687e30c8c6b5420d86e8149f7557 change-id: 20250225-led-fix-444fb544584a Best regards, -- Johan Adolfsson <johan.adolfsson@axis.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH RFC v3 1/2] leds: leds-lp50xx: Handle reg to get correct multi_index 2025-05-23 15:26 [PATCH RFC v3 0/2] leds-lp50xx: Support reg to set multi_index Johan Adolfsson @ 2025-05-23 15:26 ` Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example Johan Adolfsson 1 sibling, 0 replies; 4+ messages in thread From: Johan Adolfsson @ 2025-05-23 15:26 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Andrew Davis, Jacek Anaszewski Cc: linux-leds, linux-kernel, devicetree, Johan Adolfsson, kernel 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. If reg is out of range, an error is returned. reg within led child nodes starts with 0, to map to the iout in each bank. Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com> --- drivers/leds/leds-lp50xx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/leds/leds-lp50xx.c b/drivers/leds/leds-lp50xx.c index 02cb1565a9fb..8067aaa916bf 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,13 @@ 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 == 0 && multi_index >= LP50XX_LEDS_PER_MODULE) { + dev_err(priv->dev, "reg %i out of range\n", multi_index); + return -EINVAL; + } - mc_led_info[num_colors].color_index = color_id; + mc_led_info[multi_index].color_index = color_id; num_colors++; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example 2025-05-23 15:26 [PATCH RFC v3 0/2] leds-lp50xx: Support reg to set multi_index Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 1/2] leds: leds-lp50xx: Handle reg to get correct multi_index Johan Adolfsson @ 2025-05-23 15:26 ` Johan Adolfsson 2025-05-23 16:24 ` Rob Herring (Arm) 1 sibling, 1 reply; 4+ messages in thread From: Johan Adolfsson @ 2025-05-23 15:26 UTC (permalink / raw) To: Lee Jones, Pavel Machek, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Andrew Davis, Jacek Anaszewski Cc: linux-leds, linux-kernel, devicetree, Johan Adolfsson, kernel The led child reg node is the index within the bank, document that and update the example accordingly. Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com> --- .../devicetree/bindings/leds/leds-lp50xx.yaml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml index 402c25424525..15dcda96e867 100644 --- a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml +++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml @@ -82,6 +82,12 @@ patternProperties: properties: reg: maxItems: 1 + minimum: 0 + maximum: 2 + description: + This property denotes the index within the LED bank. + The value will act as the index in the multi_index file to give + consistent result independent of devicetree processing order. required: - reg @@ -138,18 +144,18 @@ examples: color = <LED_COLOR_ID_RGB>; function = LED_FUNCTION_STANDBY; - led@3 { - reg = <0x3>; + led@0 { + reg = <0x0>; color = <LED_COLOR_ID_RED>; }; - led@4 { - reg = <0x4>; + led@1 { + reg = <0x1>; color = <LED_COLOR_ID_GREEN>; }; - led@5 { - reg = <0x5>; + led@2 { + reg = <0x2>; color = <LED_COLOR_ID_BLUE>; }; }; -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example 2025-05-23 15:26 ` [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example Johan Adolfsson @ 2025-05-23 16:24 ` Rob Herring (Arm) 0 siblings, 0 replies; 4+ messages in thread From: Rob Herring (Arm) @ 2025-05-23 16:24 UTC (permalink / raw) To: Johan Adolfsson Cc: linux-leds, Pavel Machek, linux-kernel, Andrew Davis, Conor Dooley, kernel, Krzysztof Kozlowski, Lee Jones, Jacek Anaszewski, devicetree On Fri, 23 May 2025 17:26:28 +0200, Johan Adolfsson wrote: > The led child reg node is the index within the bank, document that > and update the example accordingly. > > Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com> > --- > .../devicetree/bindings/leds/leds-lp50xx.yaml | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml: patternProperties:^multi-led@[0-9a-f]$:patternProperties:^led@[0-9a-f]+$:properties:reg: 'minimum' should not be valid under {'enum': ['const', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'minimum', 'maximum', 'multipleOf', 'pattern']} hint: Scalar and array keywords cannot be mixed from schema $id: http://devicetree.org/meta-schemas/keywords.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml: patternProperties:^multi-led@[0-9a-f]$:patternProperties:^led@[0-9a-f]+$:properties:reg: 'maximum' should not be valid under {'enum': ['const', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'minimum', 'maximum', 'multipleOf', 'pattern']} hint: Scalar and array keywords cannot be mixed from schema $id: http://devicetree.org/meta-schemas/keywords.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml: patternProperties:^multi-led@[0-9a-f]$:patternProperties:^led@[0-9a-f]+$:properties:reg: 'anyOf' conditional failed, one must be fixed: 'minimum' is not one of ['maxItems', 'description', 'deprecated'] hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values. 'maximum' is not one of ['maxItems', 'description', 'deprecated'] hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values. Additional properties are not allowed ('maximum', 'minimum' were unexpected) hint: Arrays must be described with a combination of minItems/maxItems/items 'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf'] 1 is less than the minimum of 2 hint: Arrays must be described with a combination of minItems/maxItems/items hint: cell array properties must define how many entries and what the entries are when there is more than one entry. from schema $id: http://devicetree.org/meta-schemas/core.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250523-led-fix-v3-2-86d2690d2698@axis.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-05-23 16:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-23 15:26 [PATCH RFC v3 0/2] leds-lp50xx: Support reg to set multi_index Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 1/2] leds: leds-lp50xx: Handle reg to get correct multi_index Johan Adolfsson 2025-05-23 15:26 ` [PATCH RFC v3 2/2] dt-bindings: leds: lp50xx: Document child reg, fix example Johan Adolfsson 2025-05-23 16:24 ` Rob Herring (Arm)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).