Commit a89d385d authored by Dan Murphy's avatar Dan Murphy Committed by Pavel Machek
Browse files

dt-bindings: leds: Convert leds-lp55xx to yaml



Convert the leds-lp55xx.txt to yaml binding.

Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarDan Murphy <dmurphy@ti.com>
Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
parent 55d5d3b4
Loading
Loading
Loading
Loading
+0 −228
Original line number Diff line number Diff line
Binding for TI/National Semiconductor LP55xx Led Drivers

Required properties:
- compatible: one of
	national,lp5521
	national,lp5523
	ti,lp55231
	ti,lp5562
	ti,lp8501

- reg: I2C slave address
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)

Each child has own specific current settings
- led-cur: Current setting at each led channel (mA x10, 0 if led is not connected)
- max-cur: Maximun current at each led channel.

Optional properties:
- enable-gpio: GPIO attached to the chip's enable pin
- label: Used for naming LEDs
- pwr-sel: LP8501 specific property. Power selection for output channels.
         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

Alternatively, each child can have a specific channel name and trigger:
- chan-name (optional): name of channel
- linux,default-trigger (optional): see
  Documentation/devicetree/bindings/leds/common.txt

example 1) LP5521
3 LED channels, external clock used. Channel names are 'lp5521_pri:channel0',
'lp5521_pri:channel1' and 'lp5521_pri:channel2', with a heartbeat trigger
on channel 0.

lp5521@32 {
	compatible = "national,lp5521";
	reg = <0x32>;
	label = "lp5521_pri";
	clock-mode = /bits/ 8 <2>;

	chan0 {
		led-cur = /bits/ 8 <0x2f>;
		max-cur = /bits/ 8 <0x5f>;
		linux,default-trigger = "heartbeat";
	};

	chan1 {
		led-cur = /bits/ 8 <0x2f>;
		max-cur = /bits/ 8 <0x5f>;
	};

	chan2 {
		led-cur = /bits/ 8 <0x2f>;
		max-cur = /bits/ 8 <0x5f>;
	};
};

example 2) LP5523
9 LED channels with specific name. Internal clock used.
The I2C slave address is configurable with ASEL1 and ASEL0 pins.
Available addresses are 32/33/34/35h.

ASEL1    ASEL0    Address
-------------------------
 GND      GND       32h
 GND      VEN       33h
 VEN      GND       34h
 VEN      VEN       35h

lp5523@32 {
	compatible = "national,lp5523";
	reg = <0x32>;
	clock-mode = /bits/ 8 <1>;

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

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

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

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

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

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

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

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

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

example 3) LP5562
4 channels are defined.

lp5562@30 {
	compatible = "ti,lp5562";
	reg = <0x30>;
	clock-mode = /bits/8 <2>;

	chan0 {
		chan-name = "R";
		led-cur = /bits/ 8 <0x20>;
		max-cur = /bits/ 8 <0x60>;
	};

	chan1 {
		chan-name = "G";
		led-cur = /bits/ 8 <0x20>;
		max-cur = /bits/ 8 <0x60>;
	};

	chan2 {
		chan-name = "B";
		led-cur = /bits/ 8 <0x20>;
		max-cur = /bits/ 8 <0x60>;
	};

	chan3 {
		chan-name = "W";
		led-cur = /bits/ 8 <0x20>;
		max-cur = /bits/ 8 <0x60>;
	};
};

example 4) LP8501
9 channels are defined. The 'pwr-sel' is LP8501 specific property.
Others are same as LP5523.

lp8501@32 {
	compatible = "ti,lp8501";
	reg = <0x32>;
	clock-mode = /bits/ 8 <2>;
	pwr-sel = /bits/ 8 <3>;	/* D1~9 connected to VOUT */

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

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

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

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

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

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

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

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

	chan8 {
		chan-name = "d9";
		led-cur = /bits/ 8 <0x14>;
		max-cur = /bits/ 8 <0x20>;
	};
};
+220 −0
Original line number Diff line number Diff line
# 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,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-gpio:
    maxItems: 1
    description: |
      GPIO attached to the chip's enable pin

  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

patternProperties:
  "(^led@[0-9a-f]$|led)":
    type: object
    $ref: common.yaml#
    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: Maximun 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

required:
  - compatible
  - reg

examples:
  - |
   #include <dt-bindings/leds/common.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 */

           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_MULTI>;
               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>;
               };
            };
        };
    };

...