forked from Minki/linux
a4138e7c12
Instead of port and endpoint properties for representing ports and endpoints, use the keys of the hierarchical data extension references when referring to the port and endpoint nodes. Additionally, use "reg" properties as in Device Tree to specify the number of the port or the endpoint. The keys of the port nodes begin with "port" and the keys of the endpoint nodes begin with "endpoint", both followed by "@" character and the number of the port or the endpoint. These changes have the advantage that no ACPI specific properties need to be added to refer to non-device nodes. Additionally, using the name of the node instead of an integer property inside the node is easier to parse in code and easier for humans to understand. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
90 lines
2.8 KiB
Plaintext
90 lines
2.8 KiB
Plaintext
Copyright (C) 2018 Intel Corporation
|
|
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
|
|
|
|
|
|
Referencing hierarchical data nodes
|
|
-----------------------------------
|
|
|
|
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 [1] 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 [2] 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 () { "random-property", 3 },
|
|
}
|
|
})
|
|
Name (NOD1, Package() {
|
|
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
|
|
Package () {
|
|
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", ^DEV0, "node@1", "anothernode" },
|
|
}
|
|
})
|
|
}
|
|
|
|
Please also see a graph example in graph.txt .
|
|
|
|
References
|
|
----------
|
|
|
|
[1] Hierarchical Data Extension UUID For _DSD.
|
|
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf>,
|
|
referenced 2018-07-17.
|
|
|
|
[2] Device Properties UUID For _DSD.
|
|
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf>,
|
|
referenced 2016-10-04.
|