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

title: AWINIC AW200XX LED

maintainers:
  - Martin Kurbanov <mmkurbanov@sberdevices.ru>

description: |
  It is a matrix LED driver programmed via an I2C interface. Devices have
  a set of individually controlled leds and support 3 pattern controllers
  for auto breathing or group dimming control. Supported devices:
    - AW20036 (3x12) 36 LEDs
    - AW20054 (6x9)  54 LEDs
    - AW20072 (6x12) 72 LEDs
    - AW20108 (9x12) 108 LEDs

  For more product information please see the link below:
  aw20036 - https://www.awinic.com/en/productDetail/AW20036QNR#tech-docs
  aw20054 - https://www.awinic.com/en/productDetail/AW20054QNR#tech-docs
  aw20072 - https://www.awinic.com/en/productDetail/AW20072QNR#tech-docs
  aw20108 - https://www.awinic.com/en/productDetail/AW20108QNR#tech-docs

properties:
  compatible:
    enum:
      - awinic,aw20036
      - awinic,aw20054
      - awinic,aw20072
      - awinic,aw20108

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  enable-gpios:
    maxItems: 1

patternProperties:
  "^led@[0-9a-f]+$":
    type: object
    $ref: common.yaml#
    unevaluatedProperties: false

    properties:
      reg:
        description:
          LED number
        maxItems: 1

      led-max-microamp:
        default: 9780
        description: |
          Note that a driver will take the minimum of all LED limits
          since the chip has a single global setting.
          The maximum output current of each LED is calculated by the
          following formula:
            IMAXled = 160000 * (592 / 600.5) * (1 / max-current-switch-number)
          And the minimum output current formula:
            IMINled = 3300 * (592 / 600.5) * (1 / max-current-switch-number)
          where max-current-switch-number is determined by led configuration
          and depends on how leds are physically connected to the led driver.

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: awinic,aw20036
    then:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              items:
                minimum: 0
                maximum: 36

  - if:
      properties:
        compatible:
          contains:
            const: awinic,aw20054
    then:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              items:
                minimum: 0
                maximum: 54

  - if:
      properties:
        compatible:
          contains:
            const: awinic,aw20072
    then:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              items:
                minimum: 0
                maximum: 72

  - if:
      properties:
        compatible:
          contains:
            const: awinic,aw20108
    then:
      patternProperties:
        "^led@[0-9a-f]+$":
          properties:
            reg:
              items:
                minimum: 0
                maximum: 108

required:
  - compatible
  - reg
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

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

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

        led-controller@3a {
            compatible = "awinic,aw20036";
            reg = <0x3a>;
            #address-cells = <1>;
            #size-cells = <0>;
            enable-gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;

            led@0 {
                reg = <0x0>;
                color = <LED_COLOR_ID_RED>;
                led-max-microamp = <9780>;
            };

            led@1 {
                reg = <0x1>;
                color = <LED_COLOR_ID_GREEN>;
                led-max-microamp = <9780>;
            };

            led@2 {
                reg = <0x2>;
                color = <LED_COLOR_ID_BLUE>;
                led-max-microamp = <9780>;
            };
        };
    };

...
