2021-04-29 21:16:40

by Bjorn Andersson

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

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 <[email protected]>
---

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 <[email protected]>
+
+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#
+
+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>;
+ };
+...
--
2.29.2


2021-04-30 20:06:44

by Rob Herring

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

On Thu, Apr 29, 2021 at 02:15:12PM -0700, 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 <[email protected]>
> ---
>
> 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 <[email protected]>
> +
> +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

constraints?

> +
> + 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.

Sounds like a matrix rather than array. Constraints on the values?

> +
> + 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#
> +
> +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>;
> + };
> +...
> --
> 2.29.2
>

2021-05-02 20:54:37

by Bjorn Andersson

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

On Fri 30 Apr 15:05 CDT 2021, Rob Herring wrote:
> > diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml
[..]
> > + 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
>
> constraints?
>

Yes, we should be able to constrain this a little bit.

> > +
> > + 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.
>
> Sounds like a matrix rather than array. Constraints on the values?
>

I wasn't aware of uint32-matrix and that I can describe the constraints
of the values in the matrix. I'll familiarize myself with it and see if
I can tighten this up a little bit.

Thanks,
Bjorn

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

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 <[email protected]>
> ---
>
> 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 <[email protected]>
> +
> +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

2021-05-04 14:45:17

by Pavel Machek

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

Hi!
On Mon 2021-05-03 18:01:09, Subbaraman Narayanamurthy wrote:
> 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 <[email protected]>
...
> > + "^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?
>

Please trim your replies and format emails to 72 columns or so.

If you need patterns in DTS that can be discussed, but it should be
generic functionality not tied to one driver.

Best regards,

Pavel
--

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

On 5/4/21 7:39 AM, Pavel Machek wrote:
> Hi!
> On Mon 2021-05-03 18:01:09, Subbaraman Narayanamurthy wrote:
>> 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 <[email protected]>
> ...
>>> + "^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?
>>
> Please trim your replies and format emails to 72 columns or so.

Sure noted.

> If you need patterns in DTS that can be discussed, but it should be
> generic functionality not tied to one driver.

I agree. It's not tied up just with this driver but wanted to see whether
it's feasible/acceptable.

>
> Best regards,
>
> Pavel

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