diff mbox series

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

Message ID 20210429211517.312792-2-bjorn.andersson@linaro.org
State New
Headers show
Series Qualcomm Light Pulse Generator | expand

Commit Message

Bjorn Andersson April 29, 2021, 9:15 p.m. UTC
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@linaro.org>

---

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

-- 
2.29.2

Comments

Bjorn Andersson May 2, 2021, 8:53 p.m. UTC | #1
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
Subbaraman Narayanamurthy May 4, 2021, 1:01 a.m. UTC | #2
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@linaro.org>

> ---

>

> 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@linaro.org>

> +

> +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
Pavel Machek May 4, 2021, 2:39 p.m. UTC | #3
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 <bjorn.andersson@linaro.org>

...
> > +      "^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
--
Subbaraman Narayanamurthy May 4, 2021, 4:29 p.m. UTC | #4
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 <bjorn.andersson@linaro.org>

> ...

>>> +      "^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
diff mbox series

Patch

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@linaro.org>
+
+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>;
+    };
+...