# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/leds/qcom,spmi-flash-led.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Flash LED device inside Qualcomm Technologies, Inc. PMICs

maintainers:
  - Fenglin Wu <quic_fenglinw@quicinc.com>

description: |
  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
  The flash LED module can have different number of LED channels supported
  e.g. 3 or 4. There are some different registers between them but they can
  both support maximum current up to 1.5 A per channel and they can also support
  ganging 2 channels together to supply maximum current up to 2 A. The current
  will be split symmetrically on each channel and they will be enabled and
  disabled at the same time.

properties:
  compatible:
    items:
      - enum:
          - qcom,pm6150l-flash-led
          - qcom,pm660l-flash-led
          - qcom,pm8150c-flash-led
          - qcom,pm8150l-flash-led
          - qcom,pm8350c-flash-led
          - qcom,pm8550-flash-led
          - qcom,pmi8998-flash-led
      - const: qcom,spmi-flash-led

  reg:
    maxItems: 1

patternProperties:
  "^led-[0-3]$":
    type: object
    $ref: common.yaml#
    unevaluatedProperties: false
    description:
      Represents the physical LED components which are connected to the
      flash LED channels' output.

    properties:
      led-sources:
        description:
          The HW indices of the flash LED channels that connect to the
          physical LED
        allOf:
          - minItems: 1
            maxItems: 2
            items:
              enum: [1, 2, 3, 4]

      led-max-microamp:
        anyOf:
          - minimum: 5000
            maximum: 500000
            multipleOf: 5000
          - minimum: 10000
            maximum: 1000000
            multipleOf: 10000

      flash-max-microamp:
        anyOf:
          - minimum: 12500
            maximum: 1500000
            multipleOf: 12500
          - minimum: 25000
            maximum: 2000000
            multipleOf: 25000

      flash-max-timeout-us:
        minimum: 10000
        maximum: 1280000
        multipleOf: 10000

    required:
      - led-sources
      - led-max-microamp

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/leds/common.h>

    pmic {
        #address-cells = <1>;
        #size-cells = <0>;

        led-controller@ee00 {
            compatible = "qcom,pm8350c-flash-led", "qcom,spmi-flash-led";
            reg = <0xee00>;

            led-0 {
                function = LED_FUNCTION_FLASH;
                color = <LED_COLOR_ID_WHITE>;
                led-sources = <1>, <4>;
                led-max-microamp = <300000>;
                flash-max-microamp = <2000000>;
                flash-max-timeout-us = <1280000>;
                function-enumerator = <0>;
            };

            led-1 {
                function = LED_FUNCTION_FLASH;
                color = <LED_COLOR_ID_YELLOW>;
                led-sources = <2>, <3>;
                led-max-microamp = <300000>;
                flash-max-microamp = <2000000>;
                flash-max-timeout-us = <1280000>;
                function-enumerator = <1>;
            };
        };
    };
