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

title: Analog Devices LTC3220 LED Driver

maintainers:
  - Edelweise Escala <edelweise.escala@analog.com>

description: >
  The LTC3220 is a multi-display LED driver, which contains a high-efficiency,
  low-noise charge pump to provide power to up to 18 LED current sources.
  The LEDs are individually configurable to 64-step linear brightness control,
  blinking and gradation control via 2-wire I2C interface.

  For more product information please see the link below
    https://www.analog.com/en/products/ltc3220.html

properties:
  compatible:
    const: adi,ltc3220

  reg:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  reset-gpios:
    maxItems: 1

patternProperties:
  '^led@([1-9a-f]|1[0-2])$':
    type: object
    $ref: /schemas/leds/common.yaml#
    unevaluatedProperties: false
    properties:
      reg:
        description:
          Output channel for the LED (1-18 maps to LED outputs D1-D18).
          Unit-address must be in hexadecimal (1-12 hex = 1-18 decimal).
          For aggregated LED control, define only one LED node with reg = <0x1>
          and use led-sources to list all controlled outputs. Only reg 1 should
          be present when using led-sources.
        items:
          - minimum: 1
            maximum: 18

    required:
      - reg

    if:
      required:
        - led-sources
    then:
      properties:
        reg:
          items:
            - const: 1

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

additionalProperties: false

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

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

        led-controller@1c {
            compatible = "adi,ltc3220";
            reg = <0x1c>;
            #address-cells = <1>;
            #size-cells = <0>;
            reset-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;

            led@1 {
                reg = <0x1>;
                function = LED_FUNCTION_INDICATOR;
                function-enumerator = <1>;
            };

            led@2 {
                reg = <0x2>;
                function = LED_FUNCTION_INDICATOR;
                function-enumerator = <2>;
            };

            led@3 {
                reg = <0x3>;
                function = LED_FUNCTION_INDICATOR;
                function-enumerator = <3>;
            };
        };
    };

  - |
    // Aggregated LED
    #include <dt-bindings/leds/common.h>

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

        led-controller@1c {
            compatible = "adi,ltc3220";
            reg = <0x1c>;
            #address-cells = <1>;
            #size-cells = <0>;

            led@1 {
                reg = <0x1>;
                led-sources = <0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12>;
                function = LED_FUNCTION_BACKLIGHT;
            };
        };
    };

...