xref: /linux/Documentation/firmware-guide/acpi/dsd/leds.rst (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
12b2d4247SSakari Ailus.. SPDX-License-Identifier: GPL-2.0
22b2d4247SSakari Ailus.. include:: <isonum.txt>
32b2d4247SSakari Ailus
42b2d4247SSakari Ailus========================================
571c87308SSakari AilusDescribing and referring to LEDs in ACPI
62b2d4247SSakari Ailus========================================
771c87308SSakari Ailus
859f3f982SSakari AilusIndividual LEDs are described by hierarchical data extension [5] nodes under the
971c87308SSakari Ailusdevice node, the LED driver chip. The "reg" property in the LED specific nodes
1071c87308SSakari Ailustells the numerical ID of each individual LED output to which the LEDs are
1159f3f982SSakari Ailusconnected. [leds] The hierarchical data nodes are named "led@X", where X is the
1271c87308SSakari Ailusnumber of the LED output.
1371c87308SSakari Ailus
1459f3f982SSakari AilusReferring to LEDs in Device tree is documented in [video-interfaces], in
1559f3f982SSakari Ailus"flash-leds" property documentation. In short, LEDs are directly referred to by
1659f3f982SSakari Ailususing phandles.
1771c87308SSakari Ailus
1871c87308SSakari AilusACPI allows (as does DT) using integer arguments after the reference. A
1971c87308SSakari Ailuscombination of the LED driver device reference and an integer argument,
2071c87308SSakari Ailusreferring to the "reg" property of the relevant LED, is used to identify
2171c87308SSakari Ailusindividual LEDs. The value of the "reg" property is a contract between the
2271c87308SSakari Ailusfirmware and software, it uniquely identifies the LED driver outputs.
2371c87308SSakari Ailus
2471c87308SSakari AilusUnder the LED driver device, The first hierarchical data extension package list
2571c87308SSakari Ailusentry shall contain the string "led@" followed by the number of the LED,
2671c87308SSakari Ailusfollowed by the referred object name. That object shall be named "LED" followed
2771c87308SSakari Ailusby the number of the LED.
2871c87308SSakari Ailus
292b2d4247SSakari AilusExample
302b2d4247SSakari Ailus=======
312b2d4247SSakari Ailus
322b2d4247SSakari AilusAn ASL example of a camera sensor device and a LED driver device for two LEDs is
332b2d4247SSakari Ailusshow below. Objects not relevant for LEDs or the references to them have been
342b2d4247SSakari Ailusomitted. ::
3571c87308SSakari Ailus
3671c87308SSakari Ailus	Device (LED)
3771c87308SSakari Ailus	{
3871c87308SSakari Ailus		Name (_DSD, Package () {
3971c87308SSakari Ailus			ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
4071c87308SSakari Ailus			Package () {
4171c87308SSakari Ailus				Package () { "led@0", LED0 },
4271c87308SSakari Ailus				Package () { "led@1", LED1 },
4371c87308SSakari Ailus			}
4471c87308SSakari Ailus		})
4571c87308SSakari Ailus		Name (LED0, Package () {
4671c87308SSakari Ailus			ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
4771c87308SSakari Ailus			Package () {
4871c87308SSakari Ailus				Package () { "reg", 0 },
4971c87308SSakari Ailus				Package () { "flash-max-microamp", 1000000 },
5071c87308SSakari Ailus				Package () { "flash-timeout-us", 200000 },
5171c87308SSakari Ailus				Package () { "led-max-microamp", 100000 },
5271c87308SSakari Ailus				Package () { "label", "white:flash" },
5371c87308SSakari Ailus			}
5471c87308SSakari Ailus		})
5571c87308SSakari Ailus		Name (LED1, Package () {
5671c87308SSakari Ailus			ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
5771c87308SSakari Ailus			Package () {
5871c87308SSakari Ailus				Package () { "reg", 1 },
5971c87308SSakari Ailus				Package () { "led-max-microamp", 10000 },
6071c87308SSakari Ailus				Package () { "label", "red:indicator" },
6171c87308SSakari Ailus			}
6271c87308SSakari Ailus		})
6371c87308SSakari Ailus	}
6471c87308SSakari Ailus
6571c87308SSakari Ailus	Device (SEN)
6671c87308SSakari Ailus	{
6771c87308SSakari Ailus		Name (_DSD, Package () {
6871c87308SSakari Ailus			ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
6971c87308SSakari Ailus			Package () {
7071c87308SSakari Ailus				Package () {
7171c87308SSakari Ailus					"flash-leds",
72*6db0261fSSakari Ailus					Package () { "^LED.LED0", "^LED.LED1" },
7371c87308SSakari Ailus				}
7471c87308SSakari Ailus			}
7571c87308SSakari Ailus		})
7671c87308SSakari Ailus	}
7771c87308SSakari Ailus
7871c87308SSakari Ailuswhere
792b2d4247SSakari Ailus::
8071c87308SSakari Ailus
8171c87308SSakari Ailus	LED	LED driver device
8271c87308SSakari Ailus	LED0	First LED
8371c87308SSakari Ailus	LED1	Second LED
842b2d4247SSakari Ailus	SEN	Camera sensor device (or another device the LED is related to)
852b2d4247SSakari Ailus
862b2d4247SSakari AilusReferences
872b2d4247SSakari Ailus==========
8871c87308SSakari Ailus
8959f3f982SSakari Ailus[acpi] Advanced Configuration and Power Interface Specification.
9059f3f982SSakari Ailus    https://uefi.org/specifications/ACPI/6.4/, referenced 2021-11-30.
9171c87308SSakari Ailus
9259f3f982SSakari Ailus[data-node-ref] Documentation/firmware-guide/acpi/dsd/data-node-references.rst
9371c87308SSakari Ailus
9459f3f982SSakari Ailus[devicetree] Devicetree. https://www.devicetree.org, referenced 2019-02-21.
9571c87308SSakari Ailus
9659f3f982SSakari Ailus[dsd-guide] DSD Guide.
9759f3f982SSakari Ailus    https://github.com/UEFI/DSD-Guide/blob/main/dsd-guide.adoc, referenced
9859f3f982SSakari Ailus    2021-11-30.
9971c87308SSakari Ailus
10059f3f982SSakari Ailus[leds] Documentation/devicetree/bindings/leds/common.yaml
10171c87308SSakari Ailus
10259f3f982SSakari Ailus[video-interfaces] Documentation/devicetree/bindings/media/video-interfaces.yaml
103