Skip to content

Commit 6db0261

Browse files
Sakari Ailusrafaeljw
authored andcommitted
Documentation: ACPI: Use all-string data node references
Document that references to data nodes shall use string-only references instead of a device reference and a succession of the first package entries of hierarchical data node references. Fixes: 9880702 ("ACPI: property: Support using strings in reference properties") Cc: 6.8+ <[email protected]> # 6.8+ Signed-off-by: Sakari Ailus <[email protected]> Link: https://patch.msgid.link/[email protected] [ rjw: Clarifying edits ] Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 0af2f6b commit 6db0261

File tree

3 files changed

+17
-27
lines changed

3 files changed

+17
-27
lines changed

Documentation/firmware-guide/acpi/dsd/data-node-references.rst

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ ACPI in general allows referring to device objects in the tree only.
1212
Hierarchical data extension nodes may not be referred to directly, hence this
1313
document defines a scheme to implement such references.
1414

15-
A reference consist of the device object name followed by one or more
16-
hierarchical data extension [dsd-guide] keys. Specifically, the hierarchical
17-
data extension node which is referred to by the key shall lie directly under
18-
the parent object i.e. either the device object or another hierarchical data
19-
extension node.
15+
A reference to a _DSD hierarchical data node is a string consisting of a
16+
device object reference followed by a dot (".") and a relative path to a data
17+
node object. Do not use non-string references as this will produce a copy of
18+
the hierarchical data node, not a reference!
19+
20+
The hierarchical data extension node which is referred to shall be located
21+
directly under its parent object i.e. either the device object or another
22+
hierarchical data extension node [dsd-guide].
2023

2124
The keys in the hierarchical data nodes shall consist of the name of the node,
2225
"@" character and the number of the node in hexadecimal notation (without pre-
@@ -33,11 +36,9 @@ extension key.
3336
Example
3437
=======
3538

36-
In the ASL snippet below, the "reference" _DSD property 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.
39+
In the ASL snippet below, the "reference" _DSD property contains a string
40+
reference to a hierarchical data extension node ANOD under DEV0 under the parent
41+
of DEV1. ANOD is also the final target node of the reference.
4142
::
4243

4344
Device (DEV0)
@@ -76,10 +77,7 @@ the ANOD object which is also the final target node of the reference.
7677
Name (_DSD, Package () {
7778
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
7879
Package () {
79-
Package () {
80-
"reference", Package () {
81-
^DEV0, "node@1", "anothernode"
82-
}
80+
Package () { "reference", "^DEV0.ANOD" }
8381
},
8482
}
8583
})

Documentation/firmware-guide/acpi/dsd/graph.rst

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,9 @@ of that port shall be zero. Similarly, if a port may only have a single
6666
endpoint, the number of that endpoint shall be zero.
6767

6868
The endpoint reference uses property extension with "remote-endpoint" property
69-
name followed by a reference in the same package. Such references consist of
70-
the remote device reference, the first package entry of the port data extension
71-
reference under the device and finally the first package entry of the endpoint
72-
data extension reference under the port. Individual references thus appear as::
69+
name followed by a string reference in the same package. [data-node-ref]::
7370

74-
Package() { device, "port@X", "endpoint@Y" }
71+
"device.datanode"
7572

7673
In the above example, "X" is the number of the port and "Y" is the number of
7774
the endpoint.
@@ -109,7 +106,7 @@ A simple example of this is show below::
109106
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
110107
Package () {
111108
Package () { "reg", 0 },
112-
Package () { "remote-endpoint", Package() { \_SB.PCI0.ISP, "port@4", "endpoint@0" } },
109+
Package () { "remote-endpoint", "\\_SB.PCI0.ISP.EP40" },
113110
}
114111
})
115112
}
@@ -141,7 +138,7 @@ A simple example of this is show below::
141138
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
142139
Package () {
143140
Package () { "reg", 0 },
144-
Package () { "remote-endpoint", Package () { \_SB.PCI0.I2C2.CAM0, "port@0", "endpoint@0" } },
141+
Package () { "remote-endpoint", "\\_SB.PCI0.I2C2.CAM0.EP00" },
145142
}
146143
})
147144
}

Documentation/firmware-guide/acpi/dsd/leds.rst

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ Referring to LEDs in Device tree is documented in [video-interfaces], in
1515
"flash-leds" property documentation. In short, LEDs are directly referred to by
1616
using phandles.
1717

18-
While Device tree allows referring to any node in the tree [devicetree], in
19-
ACPI references are limited to device nodes only [acpi]. For this reason using
20-
the same mechanism on ACPI is not possible. A mechanism to refer to non-device
21-
ACPI nodes is documented in [data-node-ref].
22-
2318
ACPI allows (as does DT) using integer arguments after the reference. A
2419
combination of the LED driver device reference and an integer argument,
2520
referring to the "reg" property of the relevant LED, is used to identify
@@ -74,7 +69,7 @@ omitted. ::
7469
Package () {
7570
Package () {
7671
"flash-leds",
77-
Package () { ^LED, "led@0", ^LED, "led@1" },
72+
Package () { "^LED.LED0", "^LED.LED1" },
7873
}
7974
}
8075
})

0 commit comments

Comments
 (0)