]> err.no Git - linux-2.6/blobdiff - drivers/acpi/executer/exresnte.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireles...
[linux-2.6] / drivers / acpi / executer / exresnte.c
index ff5d8f97e8eb6dfe9024b5d61ab885ba56bfa59c..5596f42c9676038c329f6f3d0f473773adbfcb3f 100644 (file)
@@ -6,7 +6,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2005, R. Byron Moore
+ * Copyright (C) 2000 - 2008, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -87,7 +87,7 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        struct acpi_namespace_node *node;
        acpi_object_type entry_type;
 
-       ACPI_FUNCTION_TRACE("ex_resolve_node_to_value");
+       ACPI_FUNCTION_TRACE(ex_resolve_node_to_value);
 
        /*
         * The stack pointer points to a struct acpi_namespace_node (Node).  Get the
@@ -97,12 +97,13 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        source_desc = acpi_ns_get_attached_object(node);
        entry_type = acpi_ns_get_type((acpi_handle) node);
 
-       ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Entry=%p source_desc=%p [%s]\n",
+       ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n",
                          node, source_desc,
                          acpi_ut_get_type_name(entry_type)));
 
        if ((entry_type == ACPI_TYPE_LOCAL_ALIAS) ||
            (entry_type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) {
+
                /* There is always exactly one level of indirection */
 
                node = ACPI_CAST_PTR(struct acpi_namespace_node, node->object);
@@ -113,17 +114,19 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
 
        /*
         * Several object types require no further processing:
-        * 1) Devices rarely have an attached object, return the Node
+        * 1) Device/Thermal objects don't have a "real" subobject, return the Node
         * 2) Method locals and arguments have a pseudo-Node
+        * 3) 10/2007: Added method type to assist with Package construction.
         */
-       if (entry_type == ACPI_TYPE_DEVICE ||
+       if ((entry_type == ACPI_TYPE_DEVICE) ||
+           (entry_type == ACPI_TYPE_THERMAL) ||
+           (entry_type == ACPI_TYPE_METHOD) ||
            (node->flags & (ANOBJ_METHOD_ARG | ANOBJ_METHOD_LOCAL))) {
                return_ACPI_STATUS(AE_OK);
        }
 
        if (!source_desc) {
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "No object attached to node %p\n", node));
+               ACPI_ERROR((AE_INFO, "No object attached to node %p", node));
                return_ACPI_STATUS(AE_AML_NO_OPERAND);
        }
 
@@ -135,15 +138,14 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        case ACPI_TYPE_PACKAGE:
 
                if (ACPI_GET_OBJECT_TYPE(source_desc) != ACPI_TYPE_PACKAGE) {
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                         "Object not a Package, type %s\n",
-                                         acpi_ut_get_object_type_name
-                                         (source_desc)));
+                       ACPI_ERROR((AE_INFO, "Object not a Package, type %s",
+                                   acpi_ut_get_object_type_name(source_desc)));
                        return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
                }
 
                status = acpi_ds_get_package_arguments(source_desc);
                if (ACPI_SUCCESS(status)) {
+
                        /* Return an additional reference to the object */
 
                        obj_desc = source_desc;
@@ -154,15 +156,14 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        case ACPI_TYPE_BUFFER:
 
                if (ACPI_GET_OBJECT_TYPE(source_desc) != ACPI_TYPE_BUFFER) {
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                         "Object not a Buffer, type %s\n",
-                                         acpi_ut_get_object_type_name
-                                         (source_desc)));
+                       ACPI_ERROR((AE_INFO, "Object not a Buffer, type %s",
+                                   acpi_ut_get_object_type_name(source_desc)));
                        return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
                }
 
                status = acpi_ds_get_buffer_arguments(source_desc);
                if (ACPI_SUCCESS(status)) {
+
                        /* Return an additional reference to the object */
 
                        obj_desc = source_desc;
@@ -173,10 +174,8 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        case ACPI_TYPE_STRING:
 
                if (ACPI_GET_OBJECT_TYPE(source_desc) != ACPI_TYPE_STRING) {
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                         "Object not a String, type %s\n",
-                                         acpi_ut_get_object_type_name
-                                         (source_desc)));
+                       ACPI_ERROR((AE_INFO, "Object not a String, type %s",
+                                   acpi_ut_get_object_type_name(source_desc)));
                        return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
                }
 
@@ -189,10 +188,8 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        case ACPI_TYPE_INTEGER:
 
                if (ACPI_GET_OBJECT_TYPE(source_desc) != ACPI_TYPE_INTEGER) {
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                         "Object not a Integer, type %s\n",
-                                         acpi_ut_get_object_type_name
-                                         (source_desc)));
+                       ACPI_ERROR((AE_INFO, "Object not a Integer, type %s",
+                                   acpi_ut_get_object_type_name(source_desc)));
                        return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
                }
 
@@ -208,7 +205,7 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
        case ACPI_TYPE_LOCAL_INDEX_FIELD:
 
                ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
-                                 "field_read Node=%p source_desc=%p Type=%X\n",
+                                 "FieldRead Node=%p SourceDesc=%p Type=%X\n",
                                  node, source_desc, entry_type));
 
                status =
@@ -219,10 +216,8 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
                /* For these objects, just return the object attached to the Node */
 
        case ACPI_TYPE_MUTEX:
-       case ACPI_TYPE_METHOD:
        case ACPI_TYPE_POWER:
        case ACPI_TYPE_PROCESSOR:
-       case ACPI_TYPE_THERMAL:
        case ACPI_TYPE_EVENT:
        case ACPI_TYPE_REGION:
 
@@ -236,18 +231,18 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
 
        case ACPI_TYPE_ANY:
 
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "Untyped entry %p, no attached object!\n",
-                                 node));
+               ACPI_ERROR((AE_INFO,
+                           "Untyped entry %p, no attached object!", node));
 
                return_ACPI_STATUS(AE_AML_OPERAND_TYPE);        /* Cannot be AE_TYPE */
 
        case ACPI_TYPE_LOCAL_REFERENCE:
 
                switch (source_desc->reference.opcode) {
-               case AML_LOAD_OP:
+               case AML_LOAD_OP:       /* This is a ddb_handle */
+               case AML_REF_OF_OP:
+               case AML_INDEX_OP:
 
-                       /* This is a ddb_handle */
                        /* Return an additional reference to the object */
 
                        obj_desc = source_desc;
@@ -257,12 +252,11 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
                default:
                        /* No named references are allowed here */
 
-                       ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                         "Unsupported Reference opcode %X (%s)\n",
-                                         source_desc->reference.opcode,
-                                         acpi_ps_get_opcode_name(source_desc->
-                                                                 reference.
-                                                                 opcode)));
+                       ACPI_ERROR((AE_INFO,
+                                   "Unsupported Reference opcode %X (%s)",
+                                   source_desc->reference.opcode,
+                                   acpi_ps_get_opcode_name(source_desc->
+                                                           reference.opcode)));
 
                        return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
                }
@@ -272,9 +266,9 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,
 
                /* Default case is for unknown types */
 
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "Node %p - Unknown object type %X\n",
-                                 node, entry_type));
+               ACPI_ERROR((AE_INFO,
+                           "Node %p - Unknown object type %X",
+                           node, entry_type));
 
                return_ACPI_STATUS(AE_AML_OPERAND_TYPE);