* [PATCH 1/1] Documentation: ACPI: Use all-string data node references
@ 2025-04-09 8:47 Sakari Ailus
2025-04-09 14:42 ` Rafael J. Wysocki
0 siblings, 1 reply; 2+ messages in thread
From: Sakari Ailus @ 2025-04-09 8:47 UTC (permalink / raw)
To: linux-acpi; +Cc: Len Brown, andriy.shevchenko, Rafael J. Wysocki
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: 9880702d123f ("ACPI: property: Support using strings in reference properties")
Cc: stable@vger.kernel.org # for 6.8 and later
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
.../acpi/dsd/data-node-references.rst | 26 +++++++++----------
.../firmware-guide/acpi/dsd/graph.rst | 11 +++-----
.../firmware-guide/acpi/dsd/leds.rst | 7 +----
3 files changed, 17 insertions(+), 27 deletions(-)
diff --git a/Documentation/firmware-guide/acpi/dsd/data-node-references.rst b/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
index 8d8b53e96bcf..8d91fab37d89 100644
--- a/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
+++ b/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
@@ -12,11 +12,14 @@ 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 [dsd-guide] 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.
+A reference to a _DSD hierarchical data node consist of the device object
+reference followed by a dot (".") and the data node object name as a string. Do
+not use non-string references as this will result in a copy of the hierarchical
+data node itself, not a reference!
+
+The hierarchical data extension node which is referred to shall have a
+followable path of hierarchical data node reference under a device it resides
+[dsd-guide].
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-
@@ -33,11 +36,9 @@ extension key.
Example
=======
-In the ASL snippet below, the "reference" _DSD property 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.
+In the ASL snippet below, the "reference" _DSD property contains a string
+reference to a hierarchical data extension node ANOD under DEV0 under the parent
+of DEV1 device object. ANOD is also the final target node of the reference.
::
Device (DEV0)
@@ -76,10 +77,7 @@ the ANOD object which is also the final target node of the reference.
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
- Package () {
- "reference", Package () {
- ^DEV0, "node@1", "anothernode"
- }
+ Package () { "reference", "^DEV0.ANOD" }
},
}
})
diff --git a/Documentation/firmware-guide/acpi/dsd/graph.rst b/Documentation/firmware-guide/acpi/dsd/graph.rst
index b9dbfc73ed25..d6ae5ffa748c 100644
--- a/Documentation/firmware-guide/acpi/dsd/graph.rst
+++ b/Documentation/firmware-guide/acpi/dsd/graph.rst
@@ -66,12 +66,9 @@ of that port shall be zero. Similarly, if a port may only have a single
endpoint, the number of that endpoint shall be zero.
The endpoint reference uses property extension with "remote-endpoint" property
-name followed by a reference in the same package. Such references consist of
-the remote device reference, the first package entry of the port data extension
-reference under the device and finally the first package entry of the endpoint
-data extension reference under the port. Individual references thus appear as::
+name followed by a string reference in the same package. [data-node-ref]::
- Package() { device, "port@X", "endpoint@Y" }
+ "device.datanode"
In the above example, "X" is the number of the port and "Y" is the number of
the endpoint.
@@ -109,7 +106,7 @@ A simple example of this is show below::
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () { "reg", 0 },
- Package () { "remote-endpoint", Package() { \_SB.PCI0.ISP, "port@4", "endpoint@0" } },
+ Package () { "remote-endpoint", "\\_SB.PCI0.ISP.EP40" },
}
})
}
@@ -141,7 +138,7 @@ A simple example of this is show below::
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () { "reg", 0 },
- Package () { "remote-endpoint", Package () { \_SB.PCI0.I2C2.CAM0, "port@0", "endpoint@0" } },
+ Package () { "remote-endpoint", "\\_SB.PCI0.I2C2.CAM0.EP00" },
}
})
}
diff --git a/Documentation/firmware-guide/acpi/dsd/leds.rst b/Documentation/firmware-guide/acpi/dsd/leds.rst
index 93db592c93c7..a97cd07d49be 100644
--- a/Documentation/firmware-guide/acpi/dsd/leds.rst
+++ b/Documentation/firmware-guide/acpi/dsd/leds.rst
@@ -15,11 +15,6 @@ Referring to LEDs in Device tree is documented in [video-interfaces], in
"flash-leds" property documentation. In short, LEDs are directly referred to by
using phandles.
-While Device tree allows referring to any node in the tree [devicetree], in
-ACPI references are limited to device nodes only [acpi]. For this reason using
-the same mechanism on ACPI is not possible. A mechanism to refer to non-device
-ACPI nodes is documented in [data-node-ref].
-
ACPI allows (as does DT) using integer arguments after the reference. A
combination of the LED driver device reference and an integer argument,
referring to the "reg" property of the relevant LED, is used to identify
@@ -74,7 +69,7 @@ omitted. ::
Package () {
Package () {
"flash-leds",
- Package () { ^LED, "led@0", ^LED, "led@1" },
+ Package () { "^LED.LED0", "^LED.LED1" },
}
}
})
--
2.39.5
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH 1/1] Documentation: ACPI: Use all-string data node references
2025-04-09 8:47 [PATCH 1/1] Documentation: ACPI: Use all-string data node references Sakari Ailus
@ 2025-04-09 14:42 ` Rafael J. Wysocki
0 siblings, 0 replies; 2+ messages in thread
From: Rafael J. Wysocki @ 2025-04-09 14:42 UTC (permalink / raw)
To: Sakari Ailus; +Cc: linux-acpi, Len Brown, andriy.shevchenko, Rafael J. Wysocki
On Wed, Apr 9, 2025 at 10:47 AM Sakari Ailus
<sakari.ailus@linux.intel.com> wrote:
>
> 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: 9880702d123f ("ACPI: property: Support using strings in reference properties")
> Cc: stable@vger.kernel.org # for 6.8 and later
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> .../acpi/dsd/data-node-references.rst | 26 +++++++++----------
> .../firmware-guide/acpi/dsd/graph.rst | 11 +++-----
> .../firmware-guide/acpi/dsd/leds.rst | 7 +----
> 3 files changed, 17 insertions(+), 27 deletions(-)
>
> diff --git a/Documentation/firmware-guide/acpi/dsd/data-node-references.rst b/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
> index 8d8b53e96bcf..8d91fab37d89 100644
> --- a/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
> +++ b/Documentation/firmware-guide/acpi/dsd/data-node-references.rst
> @@ -12,11 +12,14 @@ 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 [dsd-guide] 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.
> +A reference to a _DSD hierarchical data node consist of the device object
> +reference followed by a dot (".") and the data node object name as a string. Do
> +not use non-string references as this will result in a copy of the hierarchical
> +data node itself, not a reference!
> +
> +The hierarchical data extension node which is referred to shall have a
> +followable path of hierarchical data node reference under a device it resides
> +[dsd-guide].
I've edited the above so it is a bit easier to follow and applied the
patch for 6.16.
> 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-
> @@ -33,11 +36,9 @@ extension key.
> Example
> =======
>
> -In the ASL snippet below, the "reference" _DSD property 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.
> +In the ASL snippet below, the "reference" _DSD property contains a string
> +reference to a hierarchical data extension node ANOD under DEV0 under the parent
> +of DEV1 device object. ANOD is also the final target node of the reference.
> ::
>
> Device (DEV0)
> @@ -76,10 +77,7 @@ the ANOD object which is also the final target node of the reference.
> Name (_DSD, Package () {
> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> Package () {
> - Package () {
> - "reference", Package () {
> - ^DEV0, "node@1", "anothernode"
> - }
> + Package () { "reference", "^DEV0.ANOD" }
> },
> }
> })
> diff --git a/Documentation/firmware-guide/acpi/dsd/graph.rst b/Documentation/firmware-guide/acpi/dsd/graph.rst
> index b9dbfc73ed25..d6ae5ffa748c 100644
> --- a/Documentation/firmware-guide/acpi/dsd/graph.rst
> +++ b/Documentation/firmware-guide/acpi/dsd/graph.rst
> @@ -66,12 +66,9 @@ of that port shall be zero. Similarly, if a port may only have a single
> endpoint, the number of that endpoint shall be zero.
>
> The endpoint reference uses property extension with "remote-endpoint" property
> -name followed by a reference in the same package. Such references consist of
> -the remote device reference, the first package entry of the port data extension
> -reference under the device and finally the first package entry of the endpoint
> -data extension reference under the port. Individual references thus appear as::
> +name followed by a string reference in the same package. [data-node-ref]::
>
> - Package() { device, "port@X", "endpoint@Y" }
> + "device.datanode"
>
> In the above example, "X" is the number of the port and "Y" is the number of
> the endpoint.
> @@ -109,7 +106,7 @@ A simple example of this is show below::
> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> Package () {
> Package () { "reg", 0 },
> - Package () { "remote-endpoint", Package() { \_SB.PCI0.ISP, "port@4", "endpoint@0" } },
> + Package () { "remote-endpoint", "\\_SB.PCI0.ISP.EP40" },
> }
> })
> }
> @@ -141,7 +138,7 @@ A simple example of this is show below::
> ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
> Package () {
> Package () { "reg", 0 },
> - Package () { "remote-endpoint", Package () { \_SB.PCI0.I2C2.CAM0, "port@0", "endpoint@0" } },
> + Package () { "remote-endpoint", "\\_SB.PCI0.I2C2.CAM0.EP00" },
> }
> })
> }
> diff --git a/Documentation/firmware-guide/acpi/dsd/leds.rst b/Documentation/firmware-guide/acpi/dsd/leds.rst
> index 93db592c93c7..a97cd07d49be 100644
> --- a/Documentation/firmware-guide/acpi/dsd/leds.rst
> +++ b/Documentation/firmware-guide/acpi/dsd/leds.rst
> @@ -15,11 +15,6 @@ Referring to LEDs in Device tree is documented in [video-interfaces], in
> "flash-leds" property documentation. In short, LEDs are directly referred to by
> using phandles.
>
> -While Device tree allows referring to any node in the tree [devicetree], in
> -ACPI references are limited to device nodes only [acpi]. For this reason using
> -the same mechanism on ACPI is not possible. A mechanism to refer to non-device
> -ACPI nodes is documented in [data-node-ref].
> -
> ACPI allows (as does DT) using integer arguments after the reference. A
> combination of the LED driver device reference and an integer argument,
> referring to the "reg" property of the relevant LED, is used to identify
> @@ -74,7 +69,7 @@ omitted. ::
> Package () {
> Package () {
> "flash-leds",
> - Package () { ^LED, "led@0", ^LED, "led@1" },
> + Package () { "^LED.LED0", "^LED.LED1" },
> }
> }
> })
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-09 14:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-09 8:47 [PATCH 1/1] Documentation: ACPI: Use all-string data node references Sakari Ailus
2025-04-09 14:42 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox