Message ID | 20230830180600.1865-5-quic_amelende@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for LUT PPG | expand |
On Wed, Aug 30, 2023 at 11:05:57AM -0700, Anjelique Melendez wrote: > Update leds-qcom-lpg binding to support LPG PPG. > > Signed-off-by: Anjelique Melendez <quic_amelende@quicinc.com> > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > --- > .../bindings/leds/leds-qcom-lpg.yaml | 89 ++++++++++++++++++- > 1 file changed, 88 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml > index e6f1999cb22f..067ebe35ca5e 100644 > --- a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml > +++ b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml > @@ -11,7 +11,7 @@ maintainers: > > 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 > + a ramp generator with lookup table (LUT), the light pulse generator and a three > channel current sink. These blocks are found in a wide range of Qualcomm PMICs. > > properties: > @@ -63,6 +63,29 @@ properties: > - description: dtest line to attach > - description: flags for the attachment > > + nvmem: > + description: > Why do you have these chomping operators? I can't see any formatting that'd require them. Unless you're respinning for other reasons, you can ignore this comment. Thanks, Conor. > + This property is required for PMICs that supports PPG, which is when a > + PMIC stores LPG per-channel data and pattern LUT in SDAM modules instead > + of in a LUT peripheral. For PMICs, such as PM8350C, per-channel data > + and pattern LUT is separated into 2 SDAM modules. In that case, phandles > + to both SDAM modules need to be specified. > + minItems: 1 > + maxItems: 2 > + > + nvmem-names: > + minItems: 1 > + items: > + - const: lpg_chan_sdam > + - const: lut_sdam > + > + qcom,pbs: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > > + Phandle of the Qualcomm Programmable Boot Sequencer node (PBS). > + PBS node is used to trigger LPG pattern sequences for PMICs that support > + single SDAM PPG. > + > multi-led: > type: object > $ref: leds-class-multicolor.yaml# > @@ -106,6 +129,39 @@ required: > > additionalProperties: false > > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: qcom,pmi632-lpg > + then: > + properties: > + nvmem: > + maxItems: 1 > + nvmem-names: > + maxItems: 1 > + required: > + - nvmem > + - nvmem-names > + - qcom,pbs > + - if: > + properties: > + compatible: > + contains: > + enum: > + - qcom,pm8350c-pwm > + - qcom,pm8550-pwm > + then: > + properties: > + nvmem: > + minItems: 2 > + nvmem-names: > + minItems: 2 > + required: > + - nvmem > + - nvmem-names > + > examples: > - | > #include <dt-bindings/leds/common.h> > @@ -191,4 +247,35 @@ examples: > compatible = "qcom,pm8916-pwm"; > #pwm-cells = <2>; > }; > + - | > + #include <dt-bindings/leds/common.h> > + > + led-controller { > + compatible = "qcom,pmi632-lpg"; > + #address-cells = <1>; > + #size-cells = <0>; > + #pwm-cells = <2>; > + nvmem-names = "lpg_chan_sdam"; > + nvmem = <&pmi632_sdam_7>; > + qcom,pbs = <&pmi632_pbs_client3>; > + > + led@1 { > + reg = <1>; > + color = <LED_COLOR_ID_RED>; > + label = "red"; > + }; > + > + led@2 { > + reg = <2>; > + color = <LED_COLOR_ID_GREEN>; > + label = "green"; > + }; > + > + led@3 { > + reg = <3>; > + color = <LED_COLOR_ID_BLUE>; > + label = "blue"; > + }; > + }; > + > ... > -- > 2.41.0 >
diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml index e6f1999cb22f..067ebe35ca5e 100644 --- a/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml +++ b/Documentation/devicetree/bindings/leds/leds-qcom-lpg.yaml @@ -11,7 +11,7 @@ maintainers: 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 + a ramp generator with lookup table (LUT), the light pulse generator and a three channel current sink. These blocks are found in a wide range of Qualcomm PMICs. properties: @@ -63,6 +63,29 @@ properties: - description: dtest line to attach - description: flags for the attachment + nvmem: + description: > + This property is required for PMICs that supports PPG, which is when a + PMIC stores LPG per-channel data and pattern LUT in SDAM modules instead + of in a LUT peripheral. For PMICs, such as PM8350C, per-channel data + and pattern LUT is separated into 2 SDAM modules. In that case, phandles + to both SDAM modules need to be specified. + minItems: 1 + maxItems: 2 + + nvmem-names: + minItems: 1 + items: + - const: lpg_chan_sdam + - const: lut_sdam + + qcom,pbs: + $ref: /schemas/types.yaml#/definitions/phandle + description: > + Phandle of the Qualcomm Programmable Boot Sequencer node (PBS). + PBS node is used to trigger LPG pattern sequences for PMICs that support + single SDAM PPG. + multi-led: type: object $ref: leds-class-multicolor.yaml# @@ -106,6 +129,39 @@ required: additionalProperties: false +allOf: + - if: + properties: + compatible: + contains: + const: qcom,pmi632-lpg + then: + properties: + nvmem: + maxItems: 1 + nvmem-names: + maxItems: 1 + required: + - nvmem + - nvmem-names + - qcom,pbs + - if: + properties: + compatible: + contains: + enum: + - qcom,pm8350c-pwm + - qcom,pm8550-pwm + then: + properties: + nvmem: + minItems: 2 + nvmem-names: + minItems: 2 + required: + - nvmem + - nvmem-names + examples: - | #include <dt-bindings/leds/common.h> @@ -191,4 +247,35 @@ examples: compatible = "qcom,pm8916-pwm"; #pwm-cells = <2>; }; + - | + #include <dt-bindings/leds/common.h> + + led-controller { + compatible = "qcom,pmi632-lpg"; + #address-cells = <1>; + #size-cells = <0>; + #pwm-cells = <2>; + nvmem-names = "lpg_chan_sdam"; + nvmem = <&pmi632_sdam_7>; + qcom,pbs = <&pmi632_pbs_client3>; + + led@1 { + reg = <1>; + color = <LED_COLOR_ID_RED>; + label = "red"; + }; + + led@2 { + reg = <2>; + color = <LED_COLOR_ID_GREEN>; + label = "green"; + }; + + led@3 { + reg = <3>; + color = <LED_COLOR_ID_BLUE>; + label = "blue"; + }; + }; + ...