Merge drm/drm-next into drm-misc-next
[sfrench/cifs-2.6.git] / Documentation / acpi / dsd / data-node-references.txt
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.