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

title: TI/National Semiconductor LP55xx and LP8501 LED Drivers

maintainers:
  - Jacek Anaszewski <jacek.anaszewski@gmail.com>
  - Pavel Machek <pavel@ucw.cz>

description: |
  Bindings for the TI/National Semiconductor LP55xx and LP8501 multi channel
  LED Drivers.

  For more product information please see the link below:
    https://www.ti.com/lit/gpn/lp5521
    https://www.ti.com/lit/gpn/lp5523
    https://www.ti.com/lit/gpn/lp55231
    https://www.ti.com/lit/gpn/lp5562
    https://www.ti.com/lit/gpn/lp8501

properties:
  compatible:
    enum:
      - national,lp5521
      - national,lp5523
      - ti,lp55231
      - ti,lp5562
      - ti,lp5569
      - ti,lp8501

  reg:
    maxItems: 1
    description: I2C slave address

  clock-mode:
    $ref: /schemas/types.yaml#/definitions/uint8
    description: |
      Input clock mode
    enum:
      - 0 # automode
      - 1 # internal
      - 2 # external

  enable-gpios:
    maxItems: 1
    description: |
      GPIO attached to the chip's enable pin

  label: true

  pwr-sel:
    $ref: /schemas/types.yaml#/definitions/uint8
    description: |
      LP8501 specific property. Power selection for output channels.
    enum:
      - 0 # D1~9 are connected to VDD
      - 1 # D1~6 with VDD, D7~9 with VOUT
      - 2 # D1~6 with VOUT, D7~9 with VDD
      - 3 # D1~9 are connected to VOUT

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  ti,charge-pump-mode:
    description:
      Set the operating mode of the internal charge pump as defined in
      <dt-bindings/leds/leds-lp55xx.h>.
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 3 # auto
    maximum: 3

patternProperties:
  '^multi-led@[0-8]$':
    type: object
    $ref: leds-class-multicolor.yaml#
    unevaluatedProperties: false

    properties:
      reg:
        maximum: 8

      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

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

        properties:
          led-cur:
            $ref: /schemas/types.yaml#/definitions/uint8
            description: |
              Current setting at each LED channel (mA x10, 0 if LED is not connected)
            minimum: 0
            maximum: 255

          max-cur:
            $ref: /schemas/types.yaml#/definitions/uint8
            description: Maximum current at each LED channel.

          reg:
            maximum: 8

        required:
          - reg

  "^led@[0-8]$":
    type: object
    $ref: common.yaml#
    unevaluatedProperties: false

    properties:
      led-cur:
        $ref: /schemas/types.yaml#/definitions/uint8
        description: |
          Current setting at each LED channel (mA x10, 0 if LED is not connected)
        minimum: 0
        maximum: 255

      max-cur:
        $ref: /schemas/types.yaml#/definitions/uint8
        description: Maximum current at each LED channel.

      reg:
        description: |
          Output channel for the LED.  This is zero based channel identifier and
          the data sheet is a one based channel identifier.
          reg value to output to LED output number
        enum:
          - 0 # LED output D1
          - 1 # LED output D2
          - 2 # LED output D3
          - 3 # LED output D4
          - 4 # LED output D5
          - 5 # LED output D6
          - 6 # LED output D7
          - 7 # LED output D8
          - 8 # LED output D9

      chan-name:
        $ref: /schemas/types.yaml#/definitions/string
        description: name of channel

if:
  not:
    properties:
      compatible:
        contains:
          const: ti,lp8501
then:
  properties:
    pwr-sel: false

required:
  - compatible
  - reg

additionalProperties: false

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

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

        led-controller@32 {
            #address-cells = <1>;
            #size-cells = <0>;
            compatible = "ti,lp8501";
            reg = <0x32>;
            clock-mode = /bits/ 8 <2>;
            pwr-sel = /bits/ 8 <3>;	/* D1~9 connected to VOUT */
            ti,charge-pump-mode = <LP55XX_CP_BYPASS>;

            led@0 {
                reg = <0>;
                chan-name = "d1";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@1 {
                reg = <1>;
                chan-name = "d2";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@2 {
                reg = <2>;
                chan-name = "d3";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@3 {
                reg = <3>;
                chan-name = "d4";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@4 {
                reg = <4>;
                chan-name = "d5";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@5 {
                reg = <5>;
                chan-name = "d6";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@6 {
                reg = <6>;
                chan-name = "d7";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@7 {
                reg = <7>;
                chan-name = "d8";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };

            led@8 {
                reg = <8>;
                chan-name = "d9";
                led-cur = /bits/ 8 <0x14>;
                max-cur = /bits/ 8 <0x20>;
            };
        };

        led-controller@33 {
            #address-cells = <1>;
            #size-cells = <0>;
            compatible = "national,lp5523";
            reg = <0x33>;
            clock-mode = /bits/ 8 <0>;

            multi-led@2 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0x2>;
                color = <LED_COLOR_ID_RGB>;
                function = LED_FUNCTION_STANDBY;
                linux,default-trigger = "heartbeat";

                led@0 {
                    led-cur = /bits/ 8 <50>;
                    max-cur = /bits/ 8 <100>;
                    reg = <0x0>;
                    color = <LED_COLOR_ID_GREEN>;
                };

                led@1 {
                    led-cur = /bits/ 8 <50>;
                    max-cur = /bits/ 8 <100>;
                    reg = <0x1>;
                    color = <LED_COLOR_ID_BLUE>;
                };

                led@6 {
                    led-cur = /bits/ 8 <50>;
                    max-cur = /bits/ 8 <100>;
                    reg = <0x6>;
                    color = <LED_COLOR_ID_RED>;
                };
            };
        };
    };

...
