David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0 |
| 2 | .. include:: <isonum.txt> |
| 3 | |
| 4 | =================================== |
| 5 | Referencing hierarchical data nodes |
| 6 | =================================== |
| 7 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 8 | :Copyright: |copy| 2018, 2021 Intel Corporation |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 9 | :Author: Sakari Ailus <sakari.ailus@linux.intel.com> |
| 10 | |
| 11 | ACPI in general allows referring to device objects in the tree only. |
| 12 | Hierarchical data extension nodes may not be referred to directly, hence this |
| 13 | document defines a scheme to implement such references. |
| 14 | |
| 15 | A reference consist of the device object name followed by one or more |
| 16 | hierarchical data extension [1] keys. Specifically, the hierarchical data |
| 17 | extension node which is referred to by the key shall lie directly under the |
| 18 | parent object i.e. either the device object or another hierarchical data |
| 19 | extension node. |
| 20 | |
| 21 | The keys in the hierarchical data nodes shall consist of the name of the node, |
| 22 | "@" character and the number of the node in hexadecimal notation (without pre- |
| 23 | or postfixes). The same ACPI object shall include the _DSD property extension |
| 24 | with a property "reg" that shall have the same numerical value as the number of |
| 25 | the node. |
| 26 | |
| 27 | In case a hierarchical data extensions node has no numerical value, then the |
| 28 | "reg" property shall be omitted from the ACPI object's _DSD properties and the |
| 29 | "@" character and the number shall be omitted from the hierarchical data |
| 30 | extension key. |
| 31 | |
| 32 | |
| 33 | Example |
| 34 | ======= |
| 35 | |
| 36 | In the ASL snippet below, the "reference" _DSD property [2] contains a |
| 37 | device object reference to DEV0 and under that device object, a |
| 38 | hierarchical data extension key "node@1" referring to the NOD1 object |
| 39 | and lastly, a hierarchical data extension key "anothernode" referring to |
| 40 | the ANOD object which is also the final target node of the reference. |
| 41 | :: |
| 42 | |
| 43 | Device (DEV0) |
| 44 | { |
| 45 | Name (_DSD, Package () { |
| 46 | ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), |
| 47 | Package () { |
| 48 | Package () { "node@0", "NOD0" }, |
| 49 | Package () { "node@1", "NOD1" }, |
| 50 | } |
| 51 | }) |
| 52 | Name (NOD0, Package() { |
| 53 | ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), |
| 54 | Package () { |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 55 | Package () { "reg", 0 }, |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 56 | Package () { "random-property", 3 }, |
| 57 | } |
| 58 | }) |
| 59 | Name (NOD1, Package() { |
| 60 | ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), |
| 61 | Package () { |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 62 | Package () { "reg", 1 }, |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 63 | Package () { "anothernode", "ANOD" }, |
| 64 | } |
| 65 | }) |
| 66 | Name (ANOD, Package() { |
| 67 | ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), |
| 68 | Package () { |
| 69 | Package () { "random-property", 0 }, |
| 70 | } |
| 71 | }) |
| 72 | } |
| 73 | |
| 74 | Device (DEV1) |
| 75 | { |
| 76 | Name (_DSD, Package () { |
| 77 | ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), |
| 78 | Package () { |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 79 | Package () { |
| 80 | "reference", Package () { |
| 81 | ^DEV0, "node@1", "anothernode" |
| 82 | } |
| 83 | }, |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 84 | } |
| 85 | }) |
| 86 | } |
| 87 | |
| 88 | Please also see a graph example in :doc:`graph`. |
| 89 | |
| 90 | References |
| 91 | ========== |
| 92 | |
| 93 | [1] Hierarchical Data Extension UUID For _DSD. |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 94 | <https://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf>, |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 95 | referenced 2018-07-17. |
| 96 | |
| 97 | [2] Device Properties UUID For _DSD. |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 98 | <https://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf>, |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 99 | referenced 2016-10-04. |