# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/leds/ti,tca6507.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TCA6507 LED and GPIO controller

maintainers:
  - NeilBrown <neilb@suse.de>

description:
  The TCA6507 is a programmable LED controller connected via I2C that can drive
  7 separate lines either by holding them low, or by pulsing them with modulated
  width.

properties:
  compatible:
    const: ti,tca6507

  reg:
    description: I2C slave address of the controller.
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  gpio-controller: true

  "#gpio-cells":
    const: 2

  gpio-line-names: true

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

    properties:
      reg:
        minimum: 0
        maximum: 6

    required:
      - reg

  "^gpio@[0-6]$":
    type: object

    properties:
      compatible:
        const: gpio

      reg:
        minimum: 0
        maximum: 6

    additionalProperties: false

    required:
      - reg
      - compatible

if:
  patternProperties:
    "^gpio@[0-6]$":
      type: object
      properties:
        compatible:
          contains:
            const: gpio
then:
  required:
    - gpio-controller
    - "#gpio-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@45 {
            compatible = "ti,tca6507";
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <0x45>;

            gpio-controller;
            #gpio-cells = <2>;

            gpio-line-names = "wifi_reset@6";

            led@0 {
                label = "gta04:red:aux";
                reg = <0x0>;
            };

            led@1 {
                label = "gta04:green:aux";
                reg = <0x1>;
            };

            led@3 {
                reg = <0x3>;
                color = <LED_COLOR_ID_RED>;
                function = LED_FUNCTION_POWER;
                linux,default-trigger = "default-on";
            };

            led@4 {
                color = <LED_COLOR_ID_GREEN>;
                function = LED_FUNCTION_POWER;
                reg = <0x4>;
            };

            gpio@6 {
                compatible = "gpio";
                reg = <0x6>;
            };
        };
    };

...