Re: [PATCH v7 1/6] dt-bindings: leds: Add Qualcomm Light Pulse Generator binding

From: Subbaraman Narayanamurthy
Date: Mon May 03 2021 - 21:01:21 EST


On 4/29/21 2:15 PM, Bjorn Andersson wrote:
> This adds the binding document describing the three hardware blocks
> related to the Light Pulse Generator found in a wide range of Qualcomm
> PMICs.
>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> ---
>
> Changes since v6:
> - Backed qcom,dtest out of the child nodes again, as it's useful to be able to
> route pwm signals through dtest lines as well (and pwm channels aren't
> described as children).
> - Added pm8150[bl] compatibles
> - Dropped quotes around qcom,dtest
> - Fixed indentation errors in subnode definition
>
> .../bindings/leds/leds-qcom-lpg.yaml | 158 ++++++++++++++++++
> 1 file changed, 158 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml
>
> diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml
> new file mode 100644
> index 000000000000..2998598e8785
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml
> @@ -0,0 +1,158 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/leds-qcom-lpg.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Light Pulse Generator
> +
> +maintainers:
> + - Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> +
> +description: >
> + The Qualcomm Light Pulse Generator consists of three different hardware blocks;
> + a ramp generator with lookup table, the light pulse generator and a three
> + channel current sink. These blocks are found in a wide range of Qualcomm PMICs.
> +
> +properties:
> + compatible:
> + enum:
> + - qcom,pm8150b-lpg
> + - qcom,pm8150l-lpg
> + - qcom,pm8916-pwm
> + - qcom,pm8941-lpg
> + - qcom,pm8994-lpg
> + - qcom,pmi8994-lpg
> + - qcom,pmi8998-lpg
> +
> + "#pwm-cells":
> + const: 2
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + qcom,power-source:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + power-source used to drive the output, as defined in the datasheet.
> + Should be specified if the TRILED block is present
> +
> + qcom,dtest:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + description: >
> + A list of integer pairs, where each pair represent the dtest line the
> + particular channel should be connected to and the flags denoting how the
> + value should be outputed, as defined in the datasheet. The number of
> + pairs should be the same as the number of channels.
> +
> + multi-led:
> + type: object
> + $ref: leds-class-multicolor.yaml#
> + properties:
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + "^led@[0-9a-f]$":
> + type: object
> + $ref: common.yaml#
> +


Just a question more than a comment. From what I can see, when this device is specified as a multi-color device or an individual device (e.g. "red", "green" and "blue"), the user can only set "pattern" and "repeat" under the corresponding device after setting "pattern" to "trigger". Would you be planning to add a way (e.g. another set of DT properties) for the user to specify such patterns via the devicetree itself?


> +patternProperties:
> + "^led@[0-9a-f]$":
> + type: object
> + $ref: common.yaml#
> +
> + properties:
> + reg: true
> +
> + required:
> + - reg
> +
> +required:
> + - compatible
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/leds/common.h>
> +
> + lpg {
> + compatible = "qcom,pmi8994-lpg";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + qcom,power-source = <1>;
> +
> + qcom,dtest = <0 0
> + 0 0
> + 0 0
> + 4 1>;
> +
> + led@1 {
> + reg = <1>;
> + label = "green:user1";
> + };
> +
> + led@2 {
> + reg = <2>;
> + label = "green:user0";
> + default-state = "on";
> + };
> +
> + led@3 {
> + reg = <3>;
> + label = "green:user2";
> + };
> +
> + led@4 {
> + reg = <4>;
> + label = "green:user3";
> + };
> + };
> + - |
> + #include <dt-bindings/leds/common.h>
> +
> + lpg {
> + compatible = "qcom,pmi8994-lpg";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + qcom,power-source = <1>;
> +
> + multi-led {
> + color = <LED_COLOR_ID_MULTI>;
> + label = "rgb:notification";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + led@1 {
> + reg = <1>;
> + color = <LED_COLOR_ID_RED>;
> + };
> +
> + led@2 {
> + reg = <2>;
> + color = <LED_COLOR_ID_GREEN>;
> + };
> +
> + led@3 {
> + reg = <3>;
> + color = <LED_COLOR_ID_BLUE>;
> + };
> + };
> + };
> + - |
> + lpg {
> + compatible = "qcom,pm8916-pwm";
> + #pwm-cells = <2>;
> + };
> +...


--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project