# 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,pmi8950-pwm
          - qcom,pmi8994-lpg
          - qcom,pmi8998-lpg
          - qcom,pmk8550-pwm
      - items:
          - enum:
              - qcom,pm6150l-lpg
          - const: qcom,pm8150l-lpg
      - 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,pmi8950-pwm
              - 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";
      };
    };
