diff options
Diffstat (limited to 'drivers/acpi/utilities')
-rw-r--r-- | drivers/acpi/utilities/utcopy.c | 29 | ||||
-rw-r--r-- | drivers/acpi/utilities/utdelete.c | 5 | ||||
-rw-r--r-- | drivers/acpi/utilities/utglobal.c | 35 | ||||
-rw-r--r-- | drivers/acpi/utilities/utobject.c | 9 |
4 files changed, 42 insertions, 36 deletions
diff --git a/drivers/acpi/utilities/utcopy.c b/drivers/acpi/utilities/utcopy.c index 53499ac90988..5b2f7c27b705 100644 --- a/drivers/acpi/utilities/utcopy.c +++ b/drivers/acpi/utilities/utcopy.c @@ -42,7 +42,6 @@ */ #include <acpi/acpi.h> -#include <acpi/amlcode.h> #include <acpi/acnamesp.h> @@ -176,20 +175,24 @@ acpi_ut_copy_isimple_to_esimple(union acpi_operand_object *internal_object, /* This is an object reference. */ - switch (internal_object->reference.opcode) { - case AML_INT_NAMEPATH_OP: - - /* For namepath, return the object handle ("reference") */ - - default: - - /* We are referring to the namespace node */ + switch (internal_object->reference.class) { + case ACPI_REFCLASS_NAME: + /* + * For namepath, return the object handle ("reference") + * 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; + + default: + + /* All other reference types are unsupported */ + + return_ACPI_STATUS(AE_TYPE); } break; @@ -533,7 +536,7 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object, /* TBD: should validate incoming handle */ - internal_object->reference.opcode = AML_INT_NAMEPATH_OP; + internal_object->reference.class = ACPI_REFCLASS_NAME; internal_object->reference.node = external_object->reference.handle; break; @@ -743,11 +746,11 @@ acpi_ut_copy_simple_object(union acpi_operand_object *source_desc, * We copied the reference object, so we now must add a reference * to the object pointed to by the reference * - * DDBHandle reference (from Load/load_table is a special reference, - * it's Reference.Object is the table index, so does not need to + * DDBHandle reference (from Load/load_table) is a special reference, + * it does not have a Reference.Object, so does not need to * increase the reference count */ - if (source_desc->reference.opcode == AML_LOAD_OP) { + if (source_desc->reference.class == ACPI_REFCLASS_TABLE) { break; } diff --git a/drivers/acpi/utilities/utdelete.c b/drivers/acpi/utilities/utdelete.c index 42609d3a8aa9..5c219758c226 100644 --- a/drivers/acpi/utilities/utdelete.c +++ b/drivers/acpi/utilities/utdelete.c @@ -45,7 +45,6 @@ #include <acpi/acinterp.h> #include <acpi/acnamesp.h> #include <acpi/acevents.h> -#include <acpi/amlcode.h> #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME("utdelete") @@ -548,8 +547,8 @@ acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action) * reference must track changes to the ref count of the index or * target object. */ - if ((object->reference.opcode == AML_INDEX_OP) || - (object->reference.opcode == AML_INT_NAMEPATH_OP)) { + if ((object->reference.class == ACPI_REFCLASS_INDEX) || + (object->reference.class == ACPI_REFCLASS_NAME)) { next_object = object->reference.object; } break; diff --git a/drivers/acpi/utilities/utglobal.c b/drivers/acpi/utilities/utglobal.c index bcace577183b..0b1e493a8374 100644 --- a/drivers/acpi/utilities/utglobal.c +++ b/drivers/acpi/utilities/utglobal.c @@ -45,7 +45,6 @@ #include <acpi/acpi.h> #include <acpi/acnamesp.h> -#include <acpi/amlcode.h> ACPI_EXPORT_SYMBOL(acpi_gbl_FADT) #define _COMPONENT ACPI_UTILITIES @@ -590,25 +589,31 @@ char *acpi_ut_get_descriptor_name(void *object) /* Printable names of reference object sub-types */ +static const char *acpi_gbl_ref_class_names[] = { + /* 00 */ "Local", + /* 01 */ "Argument", + /* 02 */ "RefOf", + /* 03 */ "Index", + /* 04 */ "DdbHandle", + /* 05 */ "Named Object", + /* 06 */ "Debug" +}; + const char *acpi_ut_get_reference_name(union acpi_operand_object *object) { + if (!object) + return "NULL Object"; - switch (object->reference.opcode) { - case AML_INT_NAMEPATH_OP: - return "Name"; + if (ACPI_GET_DESCRIPTOR_TYPE(object) != ACPI_DESC_TYPE_OPERAND) + return "Not an Operand object"; - case AML_LOAD_OP: - return "DDB-Handle"; + if (object->common.type != ACPI_TYPE_LOCAL_REFERENCE) + return "Not a Reference object"; - case AML_REF_OF_OP: - return "RefOf"; + if (object->reference.class > ACPI_REFCLASS_MAX) + return "Unknown Reference class"; - case AML_INDEX_OP: - return "Index"; - - default: - return "Unknown"; - } + return acpi_gbl_ref_class_names[object->reference.class]; } #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) @@ -812,4 +817,4 @@ acpi_status acpi_ut_init_globals(void) } ACPI_EXPORT_SYMBOL(acpi_dbg_level) - ACPI_EXPORT_SYMBOL(acpi_dbg_layer) +ACPI_EXPORT_SYMBOL(acpi_dbg_layer) diff --git a/drivers/acpi/utilities/utobject.c b/drivers/acpi/utilities/utobject.c index 924d05af94d2..c354e7a42bcd 100644 --- a/drivers/acpi/utilities/utobject.c +++ b/drivers/acpi/utilities/utobject.c @@ -43,7 +43,6 @@ #include <acpi/acpi.h> #include <acpi/acnamesp.h> -#include <acpi/amlcode.h> #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME("utobject") @@ -478,8 +477,8 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object, case ACPI_TYPE_LOCAL_REFERENCE: - switch (internal_object->reference.opcode) { - case AML_INT_NAMEPATH_OP: + switch (internal_object->reference.class) { + case ACPI_REFCLASS_NAME: /* * Get the actual length of the full pathname to this object. @@ -504,9 +503,9 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object, */ ACPI_ERROR((AE_INFO, "Cannot convert to external object - " - "unsupported Reference type [%s] %X in object %p", + "unsupported Reference Class [%s] %X in object %p", acpi_ut_get_reference_name(internal_object), - internal_object->reference.opcode, + internal_object->reference.class, internal_object)); status = AE_TYPE; break; |