Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95481
b: refs/heads/master
c: cd0b224
h: refs/heads/master
i:
  95479: ca982a6
v: v3
  • Loading branch information
Bob Moore authored and Len Brown committed Apr 22, 2008
1 parent cf1beca commit d31e0aa
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7a5bb9964512c5313af19310c6a3002ec54f7336
refs/heads/master: cd0b2248241f4146152fb04a6bf4bccb6ce0478a
3 changes: 1 addition & 2 deletions trunk/drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,9 +677,8 @@ acpi_bus_extract_wakeup_device_power_package(struct acpi_device *device,
device->wakeup.resources.count = package->package.count - 2;
for (i = 0; i < device->wakeup.resources.count; i++) {
element = &(package->package.elements[i + 2]);
if (element->type != ACPI_TYPE_ANY) {
if (element->type != ACPI_TYPE_LOCAL_REFERENCE)
return AE_BAD_DATA;
}

device->wakeup.resources.handles[i] = element->reference.handle;
}
Expand Down
32 changes: 24 additions & 8 deletions trunk/drivers/acpi/utilities/utcopy.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@

#include <acpi/acpi.h>
#include <acpi/amlcode.h>
#include <acpi/acnamesp.h>


#define _COMPONENT ACPI_UTILITIES
ACPI_MODULE_NAME("utcopy")
Expand Down Expand Up @@ -172,22 +174,21 @@ acpi_ut_copy_isimple_to_esimple(union acpi_operand_object *internal_object,

case ACPI_TYPE_LOCAL_REFERENCE:

/*
* This is an object reference. Attempt to dereference it.
*/
/* This is an object reference. */

switch (internal_object->reference.opcode) {
case AML_INT_NAMEPATH_OP:

/* For namepath, return the object handle ("reference") */

default:
/*
* Use the object type of "Any" to indicate a reference
* to object containing a handle to an ACPI named object.
*/
external_object->type = ACPI_TYPE_ANY;

/* We are referring to the namespace node */

external_object->reference.handle =
internal_object->reference.node;
external_object->reference.actual_type =
acpi_ns_get_type(internal_object->reference.node);
break;
}
break;
Expand Down Expand Up @@ -460,6 +461,7 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object,
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_LOCAL_REFERENCE:

internal_object = acpi_ut_create_internal_object((u8)
external_object->
Expand All @@ -469,6 +471,11 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object,
}
break;

case ACPI_TYPE_ANY: /* This is the case for a NULL object */

*ret_internal_object = NULL;
return_ACPI_STATUS(AE_OK);

default:
/* All other types are not supported */

Expand Down Expand Up @@ -522,6 +529,15 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object,
internal_object->integer.value = external_object->integer.value;
break;

case ACPI_TYPE_LOCAL_REFERENCE:

/* TBD: should validate incoming handle */

internal_object->reference.opcode = AML_INT_NAMEPATH_OP;
internal_object->reference.node =
external_object->reference.handle;
break;

default:
/* Other types can't get here */
break;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ acpi_evaluate_reference(acpi_handle handle,

element = &(package->package.elements[i]);

if (element->type != ACPI_TYPE_ANY) {
if (element->type != ACPI_TYPE_LOCAL_REFERENCE) {
status = AE_BAD_DATA;
printk(KERN_ERR PREFIX
"Expecting a [Reference] package element, found type %X\n",
Expand Down

0 comments on commit d31e0aa

Please sign in to comment.