diff options
author | msmith <msmith@FreeBSD.org> | 2001-07-09 21:24:59 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 2001-07-09 21:24:59 +0000 |
commit | c1a327adce613ed12db89bf8d3782cba193f4ba6 (patch) | |
tree | 2abbfa156d2107a467e810c25b42b33843d77a4c /sys/dev/acpica/acpi_powerres.c | |
parent | 02c86357a57600af6da139a66d06595f5c3ac576 (diff) | |
download | FreeBSD-src-c1a327adce613ed12db89bf8d3782cba193f4ba6.zip FreeBSD-src-c1a327adce613ed12db89bf8d3782cba193f4ba6.tar.gz |
Whoops; we get an ACPI_OBJECT back from evaluating a method, not
an ACPI_OPERAND_OBJECT. Fix this so that the power resource type
can be properly checked, and we can get the system level and
resource order.
Diffstat (limited to 'sys/dev/acpica/acpi_powerres.c')
-rw-r--r-- | sys/dev/acpica/acpi_powerres.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/sys/dev/acpica/acpi_powerres.c b/sys/dev/acpica/acpi_powerres.c index d70957b..5effdb3 100644 --- a/sys/dev/acpica/acpi_powerres.c +++ b/sys/dev/acpica/acpi_powerres.c @@ -145,7 +145,7 @@ acpi_pwr_register_resource(ACPI_HANDLE res) { ACPI_STATUS status; ACPI_BUFFER buf; - ACPI_OPERAND_OBJECT *obj; + ACPI_OBJECT *obj; struct acpi_powerresource *rp, *srp; FUNCTION_TRACE(__func__); @@ -171,15 +171,13 @@ acpi_pwr_register_resource(ACPI_HANDLE res) goto out; } obj = buf.Pointer; - if (obj->Common.Type != ACPI_TYPE_POWER) { + if (obj->Type != ACPI_TYPE_POWER) { DEBUG_PRINT(TRACE_OBJECTS, ("questionable power resource object %s\n", acpi_name(res))); - /* XXX ACPI CA seems to return ACPI_TYPE_ANY, needs to be fixed */ - rp->ap_systemlevel = 0; - rp->ap_order = 0; - } else { - rp->ap_systemlevel = obj->PowerResource.SystemLevel; - rp->ap_order = obj->PowerResource.ResourceOrder; + status = AE_TYPE; + goto out; } + rp->ap_systemlevel = obj->PowerResource.SystemLevel; + rp->ap_order = obj->PowerResource.ResourceOrder; /* sort the resource into the list */ status = AE_OK; |