Commit 604e4e44 authored by Rob Herring's avatar Rob Herring
Browse files

dt-bindings: leds: Convert register-bit-led binding to DT schema



Convert the register-bit-led binding to DT schema format.

As the example just repeats nearly identical nodes, trim it down to a
few nodes and use some documented values for 'linux,default-trigger'.

Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: linux-leds@vger.kernel.org
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20210913192816.1225025-2-robh@kernel.org


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 03f838e9
Loading
Loading
Loading
Loading
+0 −94
Original line number Diff line number Diff line
Device Tree Bindings for Register Bit LEDs

Register bit leds are used with syscon multifunctional devices
where single bits in a certain register can turn on/off a
single LED. The register bit LEDs appear as children to the
syscon device, with the proper compatible string. For the
syscon bindings see:
Documentation/devicetree/bindings/mfd/syscon.yaml

Each LED is represented as a sub-node of the syscon device. Each
node's name represents the name of the corresponding LED.

LED sub-node properties:

Required properties:
- compatible : must be "register-bit-led"
- offset : register offset to the register controlling this LED
- mask : bit mask for the bit controlling this LED in the register
  typically 0x01, 0x02, 0x04 ...

Optional properties:
- label : (optional)
  see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : (optional)
  see Documentation/devicetree/bindings/leds/common.txt
- default-state: (optional) The initial state of the LED
  see Documentation/devicetree/bindings/leds/common.txt

Example:

syscon: syscon@10000000 {
	compatible = "arm,realview-pb1176-syscon", "syscon";
	reg = <0x10000000 0x1000>;

	led@8.0 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x01>;
		label = "versatile:0";
		linux,default-trigger = "heartbeat";
		default-state = "on";
	};
	led@8.1 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x02>;
		label = "versatile:1";
		linux,default-trigger = "mmc0";
		default-state = "off";
	};
	led@8.2 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x04>;
		label = "versatile:2";
		linux,default-trigger = "cpu0";
		default-state = "off";
	};
	led@8.3 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x08>;
		label = "versatile:3";
		default-state = "off";
	};
	led@8.4 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x10>;
		label = "versatile:4";
		default-state = "off";
	};
	led@8.5 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x20>;
		label = "versatile:5";
		default-state = "off";
	};
	led@8.6 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x40>;
		label = "versatile:6";
		default-state = "off";
	};
	led@8.7 {
		compatible = "register-bit-led";
		offset = <0x08>;
		mask = <0x80>;
		label = "versatile:7";
		default-state = "off";
	};
};
+78 −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/register-bit-led.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Device Tree Bindings for Register Bit LEDs

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description: |+
  Register bit leds are used with syscon multifunctional devices where single
  bits in a certain register can turn on/off a single LED. The register bit LEDs
  appear as children to the syscon device, with the proper compatible string.
  For the syscon bindings see:
  Documentation/devicetree/bindings/mfd/syscon.yaml

allOf:
  - $ref: /schemas/leds/common.yaml#

properties:
  compatible:
    const: register-bit-led

  mask:
    description:
      bit mask for the bit controlling this LED in the register
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      [ 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200, 0x400, 0x800,
        0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, 0x40000, 0x80000,
        0x100000, 0x200000, 0x400000, 0x800000, 0x1000000, 0x2000000, 0x4000000,
        0x8000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000 ]

  offset:
    description:
      register offset to the register controlling this LED
    $ref: /schemas/types.yaml#/definitions/uint32

required:
  - compatible
  - mask
  - offset

unevaluatedProperties: false

examples:
  - |

    syscon@10000000 {
        compatible = "arm,realview-pb1176-syscon", "syscon";
        reg = <0x10000000 0x1000>;

        led@8.0 {
            compatible = "register-bit-led";
            offset = <0x08>;
            mask = <0x01>;
            label = "versatile:0";
            linux,default-trigger = "heartbeat";
            default-state = "on";
        };
        led@8.1 {
            compatible = "register-bit-led";
            offset = <0x08>;
            mask = <0x02>;
            label = "versatile:1";
            default-state = "off";
        };
        led@8.2 {
            compatible = "register-bit-led";
            offset = <0x08>;
            mask = <0x04>;
            label = "versatile:2";
            default-state = "off";
        };
    };
...