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

title: TI LM3560 Synchronous Boost Flash Driver

maintainers:
  - Svyatoslav Ryhel <clamor95@gmail.com>

description:
  The LM3560 is a 2-MHz fixed frequency synchronous boost converter with two
  1000-mA constant current drivers for high-current white LEDs. The dual high-
  side current sources allow for grounded cathode LED operation and can be
  tied together for providing flash currents at up to 2 A through a single LED.
  An adaptive regulation method ensures the current for each LED remains in
  regulation and maximizes efficiency.

properties:
  compatible:
    enum:
      - ti,lm3559
      - ti,lm3560

  reg:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  enable-gpios:
    description: GPIO connected to the HWEN pin.
    maxItems: 1

  vin-supply:
    description: Supply connected to the IN line.

  flash-max-timeout-us:
    minimum: 32000
    maximum: 1024000
    default: 32000

  ti,peak-current-microamp:
    description:
      The LM3560 features 4 selectable current limits 1.6A, 2.3A, 3A, and 3.6A
      (in case of LM3559 - 1.4A, 2.1A, 2.7A, and 3.2A). When the current limit
      is reached, the LM3559/LM3560 stops switching for the remainder of the
      switching cycle.

patternProperties:
  '^led@[01]$':
    type: object
    $ref: /schemas/leds/common.yaml#
    description: LED control bank nodes.
    unevaluatedProperties: false

    properties:
      reg:
        description: Control bank selection (0 = bank A, 1 = bank B).
        maximum: 1

    required:
      - reg
      - flash-max-microamp
      - led-max-microamp

allOf:
  - $ref: /schemas/leds/common.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: ti,lm3559
    then:
      properties:
        ti,peak-current-microamp:
          enum: [1400000, 2100000, 2700000, 3200000]
          default: 1400000
      patternProperties:
        '^led@[01]$':
          properties:
            flash-max-microamp:
              minimum: 56250
              maximum: 900000
            led-max-microamp:
              minimum: 28125
              maximum: 225000

  - if:
      properties:
        compatible:
          contains:
            const: ti,lm3560
    then:
      properties:
        ti,peak-current-microamp:
          enum: [1600000, 2300000, 3000000, 3600000]
          default: 1600000
      patternProperties:
        '^led@[01]$':
          properties:
            flash-max-microamp:
              minimum: 62500
              maximum: 1000000
            led-max-microamp:
              minimum: 31250
              maximum: 250000

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@53 {
            compatible = "ti,lm3560";
            reg = <0x53>;

            enable-gpios = <&gpio 28 GPIO_ACTIVE_HIGH>;
            vin-supply = <&vdd_3v3_sys>;

            flash-max-timeout-us = <1024000>;
            ti,peak-current-microamp = <1600000>;

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

            led@0 {
                reg = <0>;

                function = LED_FUNCTION_FLASH;
                color = <LED_COLOR_ID_WHITE>;

                flash-max-microamp = <562500>;
                led-max-microamp = <156250>;
            };

            led@1 {
                reg = <1>;

                function = LED_FUNCTION_FLASH;
                color = <LED_COLOR_ID_YELLOW>;

                flash-max-microamp = <562500>;
                led-max-microamp = <156250>;
            };
        };
    };