| # 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 (LUT), the light pulse generator and a three |
| channel current sink. These blocks are found in a wide range of Qualcomm PMICs. |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - qcom,pm660l-lpg |
| - qcom,pm8150b-lpg |
| - qcom,pm8150l-lpg |
| - qcom,pm8350c-pwm |
| - qcom,pm8916-pwm |
| - qcom,pm8941-lpg |
| - qcom,pm8994-lpg |
| - qcom,pmc8180c-lpg |
| - qcom,pmi632-lpg |
| - qcom,pmi8994-lpg |
| - qcom,pmi8998-lpg |
| - qcom,pmk8550-pwm |
| - items: |
| - enum: |
| - qcom,pm8550-pwm |
| - const: qcom,pm8350c-pwm |
| |
| "#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 |
| enum: [0, 1, 3] |
| |
| qcom,dtest: |
| $ref: /schemas/types.yaml#/definitions/uint32-matrix |
| 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 outputted, as defined in the datasheet. The number of |
| pairs should be the same as the number of channels. |
| items: |
| items: |
| - 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# |
| unevaluatedProperties: false |
| |
| properties: |
| "#address-cells": |
| const: 1 |
| |
| "#size-cells": |
| const: 0 |
| |
| patternProperties: |
| "^led@[0-9a-f]$": |
| type: object |
| $ref: common.yaml# |
| unevaluatedProperties: false |
| |
| properties: |
| reg: |
| maxItems: 1 |
| |
| required: |
| - reg |
| |
| patternProperties: |
| "^led@[0-9a-f]$": |
| type: object |
| $ref: common.yaml# |
| unevaluatedProperties: false |
| |
| properties: |
| reg: |
| maxItems: 1 |
| |
| required: |
| - reg |
| |
| required: |
| - compatible |
| |
| additionalProperties: false |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - qcom,pm660l-lpg |
| - qcom,pm8150b-lpg |
| - qcom,pm8150l-lpg |
| - qcom,pm8916-pwm |
| - qcom,pm8941-lpg |
| - qcom,pm8994-lpg |
| - qcom,pmc8180c-lpg |
| - qcom,pmi8994-lpg |
| - qcom,pmi8998-lpg |
| - qcom,pmk8550-pwm |
| then: |
| properties: |
| nvmem: false |
| nvmem-names: false |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: qcom,pmi632-lpg |
| then: |
| properties: |
| nvmem: |
| maxItems: 1 |
| nvmem-names: |
| maxItems: 1 |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - qcom,pm8350c-pwm |
| then: |
| properties: |
| nvmem: |
| minItems: 2 |
| nvmem-names: |
| minItems: 2 |
| |
| examples: |
| - | |
| #include <dt-bindings/leds/common.h> |
| |
| led-controller { |
| 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>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_INDICATOR; |
| function-enumerator = <1>; |
| }; |
| |
| led@2 { |
| reg = <2>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_INDICATOR; |
| function-enumerator = <0>; |
| default-state = "on"; |
| }; |
| |
| led@3 { |
| reg = <3>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_INDICATOR; |
| function-enumerator = <2>; |
| }; |
| |
| led@4 { |
| reg = <4>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_INDICATOR; |
| function-enumerator = <3>; |
| }; |
| }; |
| - | |
| #include <dt-bindings/leds/common.h> |
| |
| led-controller { |
| compatible = "qcom,pmi8994-lpg"; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| qcom,power-source = <1>; |
| |
| multi-led { |
| color = <LED_COLOR_ID_RGB>; |
| function = LED_FUNCTION_STATUS; |
| |
| #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>; |
| }; |
| }; |
| }; |
| - | |
| pwm-controller { |
| 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"; |
| }; |
| }; |
| |
| ... |