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