123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- .. SPDX-License-Identifier: GPL-2.0
- .. include:: <isonum.txt>
- ===================================
- Referencing hierarchical data nodes
- ===================================
- :Copyright: |copy| 2018, 2021 Intel Corporation
- :Author: Sakari Ailus <[email protected]>
- ACPI in general allows referring to device objects in the tree only.
- Hierarchical data extension nodes may not be referred to directly, hence this
- document defines a scheme to implement such references.
- A reference consist of the device object name followed by one or more
- hierarchical data extension [dsd-guide] keys. Specifically, the hierarchical
- data extension node which is referred to by the key shall lie directly under
- the parent object i.e. either the device object or another hierarchical data
- extension node.
- The keys in the hierarchical data nodes shall consist of the name of the node,
- "@" character and the number of the node in hexadecimal notation (without pre-
- or postfixes). The same ACPI object shall include the _DSD property extension
- with a property "reg" that shall have the same numerical value as the number of
- the node.
- In case a hierarchical data extensions node has no numerical value, then the
- "reg" property shall be omitted from the ACPI object's _DSD properties and the
- "@" character and the number shall be omitted from the hierarchical data
- extension key.
- Example
- =======
- In the ASL snippet below, the "reference" _DSD property contains a
- device object reference to DEV0 and under that device object, a
- hierarchical data extension key "node@1" referring to the NOD1 object
- and lastly, a hierarchical data extension key "anothernode" referring to
- the ANOD object which is also the final target node of the reference.
- ::
- Device (DEV0)
- {
- Name (_DSD, Package () {
- ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
- Package () {
- Package () { "node@0", "NOD0" },
- Package () { "node@1", "NOD1" },
- }
- })
- Name (NOD0, Package() {
- ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
- Package () {
- Package () { "reg", 0 },
- Package () { "random-property", 3 },
- }
- })
- Name (NOD1, Package() {
- ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
- Package () {
- Package () { "reg", 1 },
- Package () { "anothernode", "ANOD" },
- }
- })
- Name (ANOD, Package() {
- ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
- Package () {
- Package () { "random-property", 0 },
- }
- })
- }
- Device (DEV1)
- {
- Name (_DSD, Package () {
- ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
- Package () {
- Package () {
- "reference", Package () {
- ^DEV0, "node@1", "anothernode"
- }
- },
- }
- })
- }
- Please also see a graph example in
- Documentation/firmware-guide/acpi/dsd/graph.rst.
- References
- ==========
- [dsd-guide] DSD Guide.
- https://github.com/UEFI/DSD-Guide/blob/main/dsd-guide.adoc, referenced
- 2021-11-30.
|