Commit 205ad97f authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

ACPI / property: Fix subnode lookup scope for data-only subnodes

The correct scope for looking up the objects to generate data packages for
data-only subnodes pointed to by another data-only subnode is the scope
of the parent of that subnode and not the scope containing the _DSD object
at the top of the hierarchy (the latter works only if all of the objects
returning data-only subnode packages in a given hierarchy are in the same
scope).

Fix the code to work as expected.

Fixes: 445b0eb0 (ACPI / property: Add support for data-only subnodes)
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent 3f4232ee
...@@ -71,7 +71,14 @@ static bool acpi_nondev_subnode_ok(acpi_handle scope, ...@@ -71,7 +71,14 @@ static bool acpi_nondev_subnode_ok(acpi_handle scope,
if (acpi_extract_properties(buf.pointer, &dn->data)) if (acpi_extract_properties(buf.pointer, &dn->data))
dn->handle = handle; dn->handle = handle;
if (acpi_enumerate_nondev_subnodes(scope, buf.pointer, &dn->data)) /*
* The scope for the subnode object lookup is the one of the namespace
* node (device) containing the object that has returned the package.
* That is, it's the scope of that object's parent.
*/
status = acpi_get_parent(handle, &scope);
if (ACPI_SUCCESS(status)
&& acpi_enumerate_nondev_subnodes(scope, buf.pointer, &dn->data))
dn->handle = handle; dn->handle = handle;
if (dn->handle) { if (dn->handle) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment