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

title: TI LM3509 High Efficiency Boost for White LED's and/or OLED Displays

maintainers:
  - Patrick Gansterer <paroga@paroga.com>

description:
  The LM3509 current mode boost converter offers two separate outputs.
  https://www.ti.com/product/LM3509

properties:
  compatible:
    const: ti,lm3509

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  reset-gpios:
    maxItems: 1

  ti,brightness-rate-of-change-us:
    description: Brightness Rate of Change in microseconds.
    enum: [51, 13000, 26000, 52000]

  ti,oled-mode:
    description: Enable OLED mode.
    type: boolean

patternProperties:
  "^led@[01]$":
    type: object
    description: Properties for a string of connected LEDs.
    $ref: common.yaml#

    properties:
      reg:
        description:
          The control register that is used to program the two current sinks.
          The LM3509 has two registers (BMAIN and BSUB) and are represented
          as 0 or 1 in this property. The two current sinks can be controlled
          independently with both registers, or register BMAIN can be
          configured to control both sinks with the led-sources property.
        minimum: 0
        maximum: 1

      label: true

      led-sources:
        minItems: 1
        maxItems: 2
        items:
          minimum: 0
          maximum: 1

      default-brightness:
        minimum: 0
        maximum: 31
        default: 18

      max-brightness:
        minimum: 0
        maximum: 31
        default: 31

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        backlight@36 {
            compatible = "ti,lm3509";
            reg = <0x36>;
            reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;

            ti,oled-mode;
            ti,brightness-rate-of-change-us = <52000>;

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

            led@0 {
                reg = <0>;
                led-sources = <0 1>;
                label = "lcd-backlight";
                default-brightness = <12>;
                max-brightness = <31>;
            };
        };
    };
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        backlight@36 {
            compatible = "ti,lm3509";
            reg = <0x36>;

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

            led@0 {
                reg = <0>;
                default-brightness = <12>;
            };

            led@1 {
                reg = <1>;
                default-brightness = <15>;
            };
        };
    };
