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