dt-bindings: leds: Add generic LED consumer documentation

Introduce common generic led consumer binding, where consumer defines
led(s) by phandle, as opposed to trigger-source binding where the
trigger source is defined in led itself.

Add already used in some schemas 'leds' parameter which expects
phandle-array. Additionally, introduce 'led-names' which could be used
by consumers to map LED devices to their respective functions.

Signed-off-by: Aleksandrs Vinarskis <alex@vinarskis.com>
Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org>
Link: https://lore.kernel.org/r/20250910-leds-v5-1-bb90a0f897d5@vinarskis.com
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Aleksandrs Vinarskis 2025-09-10 14:01:08 +02:00 committed by Lee Jones
parent 96e048fa11
commit 3f5df63955

View file

@ -0,0 +1,67 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/leds/leds-consumer.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Common leds consumer
maintainers:
- Aleksandrs Vinarskis <alex@vinarskis.com>
description:
Some LED defined in DT are required by other DT consumers, for example
v4l2 subnode may require privacy or flash LED. Unlike trigger-source
approach which is typically used as 'soft' binding, referencing LED
devices by phandle makes things simpler when 'hard' binding is desired.
Document LED properties that its consumers may define.
select: true
properties:
leds:
oneOf:
- type: object
- $ref: /schemas/types.yaml#/definitions/phandle-array
description:
A list of LED device(s) required by a particular consumer.
items:
maxItems: 1
led-names:
description:
A list of device name(s). Used to map LED devices to their respective
functions, when consumer requires more than one LED.
additionalProperties: true
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
leds {
compatible = "gpio-leds";
privacy_led: privacy-led {
color = <LED_COLOR_ID_RED>;
default-state = "off";
function = LED_FUNCTION_INDICATOR;
gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
};
};
i2c {
#address-cells = <1>;
#size-cells = <0>;
v4l2_node: camera@36 {
reg = <0x36>;
leds = <&privacy_led>;
led-names = "privacy";
};
};
...