162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci.. include:: <isonum.txt> 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci=================================== 562306a36Sopenharmony_ciReferencing hierarchical data nodes 662306a36Sopenharmony_ci=================================== 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci:Copyright: |copy| 2018, 2021 Intel Corporation 962306a36Sopenharmony_ci:Author: Sakari Ailus <sakari.ailus@linux.intel.com> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciACPI in general allows referring to device objects in the tree only. 1262306a36Sopenharmony_ciHierarchical data extension nodes may not be referred to directly, hence this 1362306a36Sopenharmony_cidocument defines a scheme to implement such references. 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciA reference consist of the device object name followed by one or more 1662306a36Sopenharmony_cihierarchical data extension [dsd-guide] keys. Specifically, the hierarchical 1762306a36Sopenharmony_cidata extension node which is referred to by the key shall lie directly under 1862306a36Sopenharmony_cithe parent object i.e. either the device object or another hierarchical data 1962306a36Sopenharmony_ciextension node. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciThe keys in the hierarchical data nodes shall consist of the name of the node, 2262306a36Sopenharmony_ci"@" character and the number of the node in hexadecimal notation (without pre- 2362306a36Sopenharmony_cior postfixes). The same ACPI object shall include the _DSD property extension 2462306a36Sopenharmony_ciwith a property "reg" that shall have the same numerical value as the number of 2562306a36Sopenharmony_cithe node. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciIn case a hierarchical data extensions node has no numerical value, then the 2862306a36Sopenharmony_ci"reg" property shall be omitted from the ACPI object's _DSD properties and the 2962306a36Sopenharmony_ci"@" character and the number shall be omitted from the hierarchical data 3062306a36Sopenharmony_ciextension key. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciExample 3462306a36Sopenharmony_ci======= 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciIn the ASL snippet below, the "reference" _DSD property contains a 3762306a36Sopenharmony_cidevice object reference to DEV0 and under that device object, a 3862306a36Sopenharmony_cihierarchical data extension key "node@1" referring to the NOD1 object 3962306a36Sopenharmony_ciand lastly, a hierarchical data extension key "anothernode" referring to 4062306a36Sopenharmony_cithe ANOD object which is also the final target node of the reference. 4162306a36Sopenharmony_ci:: 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci Device (DEV0) 4462306a36Sopenharmony_ci { 4562306a36Sopenharmony_ci Name (_DSD, Package () { 4662306a36Sopenharmony_ci ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), 4762306a36Sopenharmony_ci Package () { 4862306a36Sopenharmony_ci Package () { "node@0", "NOD0" }, 4962306a36Sopenharmony_ci Package () { "node@1", "NOD1" }, 5062306a36Sopenharmony_ci } 5162306a36Sopenharmony_ci }) 5262306a36Sopenharmony_ci Name (NOD0, Package() { 5362306a36Sopenharmony_ci ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 5462306a36Sopenharmony_ci Package () { 5562306a36Sopenharmony_ci Package () { "reg", 0 }, 5662306a36Sopenharmony_ci Package () { "random-property", 3 }, 5762306a36Sopenharmony_ci } 5862306a36Sopenharmony_ci }) 5962306a36Sopenharmony_ci Name (NOD1, Package() { 6062306a36Sopenharmony_ci ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), 6162306a36Sopenharmony_ci Package () { 6262306a36Sopenharmony_ci Package () { "reg", 1 }, 6362306a36Sopenharmony_ci Package () { "anothernode", "ANOD" }, 6462306a36Sopenharmony_ci } 6562306a36Sopenharmony_ci }) 6662306a36Sopenharmony_ci Name (ANOD, Package() { 6762306a36Sopenharmony_ci ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 6862306a36Sopenharmony_ci Package () { 6962306a36Sopenharmony_ci Package () { "random-property", 0 }, 7062306a36Sopenharmony_ci } 7162306a36Sopenharmony_ci }) 7262306a36Sopenharmony_ci } 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci Device (DEV1) 7562306a36Sopenharmony_ci { 7662306a36Sopenharmony_ci Name (_DSD, Package () { 7762306a36Sopenharmony_ci ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 7862306a36Sopenharmony_ci Package () { 7962306a36Sopenharmony_ci Package () { 8062306a36Sopenharmony_ci "reference", Package () { 8162306a36Sopenharmony_ci ^DEV0, "node@1", "anothernode" 8262306a36Sopenharmony_ci } 8362306a36Sopenharmony_ci }, 8462306a36Sopenharmony_ci } 8562306a36Sopenharmony_ci }) 8662306a36Sopenharmony_ci } 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciPlease also see a graph example in 8962306a36Sopenharmony_ciDocumentation/firmware-guide/acpi/dsd/graph.rst. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciReferences 9262306a36Sopenharmony_ci========== 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci[dsd-guide] DSD Guide. 9562306a36Sopenharmony_ci https://github.com/UEFI/DSD-Guide/blob/main/dsd-guide.adoc, referenced 9662306a36Sopenharmony_ci 2021-11-30. 97