Pull acpi_bus_register_driver into release branch
[pandora-kernel.git] / drivers / acpi / namespace / nsobject.c
index 27258c1..aabe879 100644 (file)
@@ -6,7 +6,7 @@
  ******************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2005, R. Byron Moore
+ * Copyright (C) 2000 - 2006, R. Byron Moore
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
-
 #define _COMPONENT          ACPI_NAMESPACE
-        ACPI_MODULE_NAME    ("nsobject")
-
+ACPI_MODULE_NAME("nsobject")
 
 /*******************************************************************************
  *
  * MUTEX:       Assumes namespace is locked
  *
  ******************************************************************************/
-
 acpi_status
-acpi_ns_attach_object (
-       struct acpi_namespace_node      *node,
-       union acpi_operand_object       *object,
-       acpi_object_type                type)
+acpi_ns_attach_object(struct acpi_namespace_node *node,
+                     union acpi_operand_object *object, acpi_object_type type)
 {
-       union acpi_operand_object       *obj_desc;
-       union acpi_operand_object       *last_obj_desc;
-       acpi_object_type                object_type = ACPI_TYPE_ANY;
-
-
-       ACPI_FUNCTION_TRACE ("ns_attach_object");
+       union acpi_operand_object *obj_desc;
+       union acpi_operand_object *last_obj_desc;
+       acpi_object_type object_type = ACPI_TYPE_ANY;
 
+       ACPI_FUNCTION_TRACE(ns_attach_object);
 
        /*
         * Parameter validation
         */
        if (!node) {
+
                /* Invalid handle */
 
-               ACPI_REPORT_ERROR (("ns_attach_object: Null named_obj handle\n"));
-               return_ACPI_STATUS (AE_BAD_PARAMETER);
+               ACPI_ERROR((AE_INFO, "Null NamedObj handle"));
+               return_ACPI_STATUS(AE_BAD_PARAMETER);
        }
 
        if (!object && (ACPI_TYPE_ANY != type)) {
+
                /* Null object */
 
-               ACPI_REPORT_ERROR ((
-                       "ns_attach_object: Null object, but type not ACPI_TYPE_ANY\n"));
-               return_ACPI_STATUS (AE_BAD_PARAMETER);
+               ACPI_ERROR((AE_INFO,
+                           "Null object, but type not ACPI_TYPE_ANY"));
+               return_ACPI_STATUS(AE_BAD_PARAMETER);
        }
 
-       if (ACPI_GET_DESCRIPTOR_TYPE (node) != ACPI_DESC_TYPE_NAMED) {
+       if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
+
                /* Not a name handle */
 
-               ACPI_REPORT_ERROR (("ns_attach_object: Invalid handle %p [%s]\n",
-                               node, acpi_ut_get_descriptor_name (node)));
-               return_ACPI_STATUS (AE_BAD_PARAMETER);
+               ACPI_ERROR((AE_INFO, "Invalid handle %p [%s]",
+                           node, acpi_ut_get_descriptor_name(node)));
+               return_ACPI_STATUS(AE_BAD_PARAMETER);
        }
 
        /* Check if this object is already attached */
 
        if (node->object == object) {
-               ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
-                       "Obj %p already installed in name_obj %p\n",
-                       object, node));
+               ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
+                                 "Obj %p already installed in NameObj %p\n",
+                                 object, node));
 
-               return_ACPI_STATUS (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
        /* If null object, we will just install it */
 
        if (!object) {
-               obj_desc   = NULL;
+               obj_desc = NULL;
                object_type = ACPI_TYPE_ANY;
        }
 
@@ -133,14 +128,14 @@ acpi_ns_attach_object (
         * If the source object is a namespace Node with an attached object,
         * we will use that (attached) object
         */
-       else if ((ACPI_GET_DESCRIPTOR_TYPE (object) == ACPI_DESC_TYPE_NAMED) &&
-                       ((struct acpi_namespace_node *) object)->object) {
+       else if ((ACPI_GET_DESCRIPTOR_TYPE(object) == ACPI_DESC_TYPE_NAMED) &&
+                ((struct acpi_namespace_node *)object)->object) {
                /*
                 * Value passed is a name handle and that name has a
                 * non-null value.  Use that name's value and type.
                 */
-               obj_desc   = ((struct acpi_namespace_node *) object)->object;
-               object_type = ((struct acpi_namespace_node *) object)->type;
+               obj_desc = ((struct acpi_namespace_node *)object)->object;
+               object_type = ((struct acpi_namespace_node *)object)->type;
        }
 
        /*
@@ -148,20 +143,20 @@ acpi_ns_attach_object (
         * it first
         */
        else {
-               obj_desc = (union acpi_operand_object   *) object;
+               obj_desc = (union acpi_operand_object *)object;
 
                /* Use the given type */
 
                object_type = type;
        }
 
-       ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
-               obj_desc, node, acpi_ut_get_node_name (node)));
+       ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
+                         obj_desc, node, acpi_ut_get_node_name(node)));
 
        /* Detach an existing attached object if present */
 
        if (node->object) {
-               acpi_ns_detach_object (node);
+               acpi_ns_detach_object(node);
        }
 
        if (obj_desc) {
@@ -169,7 +164,7 @@ acpi_ns_attach_object (
                 * Must increment the new value's reference count
                 * (if it is an internal object)
                 */
-               acpi_ut_add_reference (obj_desc);
+               acpi_ut_add_reference(obj_desc);
 
                /*
                 * Handle objects with multiple descriptors - walk
@@ -185,13 +180,12 @@ acpi_ns_attach_object (
                last_obj_desc->common.next_object = node->object;
        }
 
-       node->type     = (u8) object_type;
-       node->object   = obj_desc;
+       node->type = (u8) object_type;
+       node->object = obj_desc;
 
-       return_ACPI_STATUS (AE_OK);
+       return_ACPI_STATUS(AE_OK);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_detach_object
@@ -206,30 +200,27 @@ acpi_ns_attach_object (
  *
  ******************************************************************************/
 
-void
-acpi_ns_detach_object (
-       struct acpi_namespace_node      *node)
+void acpi_ns_detach_object(struct acpi_namespace_node *node)
 {
-       union acpi_operand_object       *obj_desc;
-
-
-       ACPI_FUNCTION_TRACE ("ns_detach_object");
+       union acpi_operand_object *obj_desc;
 
+       ACPI_FUNCTION_TRACE(ns_detach_object);
 
        obj_desc = node->object;
 
        if (!obj_desc ||
-               (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA)) {
+           (ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_LOCAL_DATA)) {
                return_VOID;
        }
 
        /* Clear the entry in all cases */
 
        node->object = NULL;
-       if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_OPERAND) {
+       if (ACPI_GET_DESCRIPTOR_TYPE(obj_desc) == ACPI_DESC_TYPE_OPERAND) {
                node->object = obj_desc->common.next_object;
                if (node->object &&
-                  (ACPI_GET_OBJECT_TYPE (node->object) != ACPI_TYPE_LOCAL_DATA)) {
+                   (ACPI_GET_OBJECT_TYPE(node->object) !=
+                    ACPI_TYPE_LOCAL_DATA)) {
                        node->object = node->object->common.next_object;
                }
        }
@@ -238,16 +229,15 @@ acpi_ns_detach_object (
 
        node->type = ACPI_TYPE_ANY;
 
-       ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Node %p [%4.4s] Object %p\n",
-               node, acpi_ut_get_node_name (node), obj_desc));
+       ACPI_DEBUG_PRINT((ACPI_DB_NAMES, "Node %p [%4.4s] Object %p\n",
+                         node, acpi_ut_get_node_name(node), obj_desc));
 
        /* Remove one reference on the object (and all subobjects) */
 
-       acpi_ut_remove_reference (obj_desc);
+       acpi_ut_remove_reference(obj_desc);
        return_VOID;
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_get_attached_object
@@ -261,29 +251,28 @@ acpi_ns_detach_object (
  *
  ******************************************************************************/
 
-union acpi_operand_object *
-acpi_ns_get_attached_object (
-       struct acpi_namespace_node      *node)
+union acpi_operand_object *acpi_ns_get_attached_object(struct
+                                                      acpi_namespace_node
+                                                      *node)
 {
-       ACPI_FUNCTION_TRACE_PTR ("ns_get_attached_object", node);
-
+       ACPI_FUNCTION_TRACE_PTR(ns_get_attached_object, node);
 
        if (!node) {
-               ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Null Node ptr\n"));
-               return_PTR (NULL);
+               ACPI_WARNING((AE_INFO, "Null Node ptr"));
+               return_PTR(NULL);
        }
 
        if (!node->object ||
-                       ((ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_OPERAND) &&
-                        (ACPI_GET_DESCRIPTOR_TYPE (node->object) != ACPI_DESC_TYPE_NAMED))  ||
-               (ACPI_GET_OBJECT_TYPE (node->object) == ACPI_TYPE_LOCAL_DATA)) {
-               return_PTR (NULL);
+           ((ACPI_GET_DESCRIPTOR_TYPE(node->object) != ACPI_DESC_TYPE_OPERAND)
+            && (ACPI_GET_DESCRIPTOR_TYPE(node->object) !=
+                ACPI_DESC_TYPE_NAMED))
+           || (ACPI_GET_OBJECT_TYPE(node->object) == ACPI_TYPE_LOCAL_DATA)) {
+               return_PTR(NULL);
        }
 
-       return_PTR (node->object);
+       return_PTR(node->object);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_get_secondary_object
@@ -297,24 +286,23 @@ acpi_ns_get_attached_object (
  *
  ******************************************************************************/
 
-union acpi_operand_object *
-acpi_ns_get_secondary_object (
-       union acpi_operand_object       *obj_desc)
+union acpi_operand_object *acpi_ns_get_secondary_object(union
+                                                       acpi_operand_object
+                                                       *obj_desc)
 {
-       ACPI_FUNCTION_TRACE_PTR ("ns_get_secondary_object", obj_desc);
-
-
-       if ((!obj_desc)                                               ||
-               (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) ||
-               (!obj_desc->common.next_object)                           ||
-               (ACPI_GET_OBJECT_TYPE (obj_desc->common.next_object) == ACPI_TYPE_LOCAL_DATA)) {
-               return_PTR (NULL);
+       ACPI_FUNCTION_TRACE_PTR(ns_get_secondary_object, obj_desc);
+
+       if ((!obj_desc) ||
+           (ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_LOCAL_DATA) ||
+           (!obj_desc->common.next_object) ||
+           (ACPI_GET_OBJECT_TYPE(obj_desc->common.next_object) ==
+            ACPI_TYPE_LOCAL_DATA)) {
+               return_PTR(NULL);
        }
 
-       return_PTR (obj_desc->common.next_object);
+       return_PTR(obj_desc->common.next_object);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_attach_data
@@ -330,23 +318,20 @@ acpi_ns_get_secondary_object (
  ******************************************************************************/
 
 acpi_status
-acpi_ns_attach_data (
-       struct acpi_namespace_node      *node,
-       acpi_object_handler             handler,
-       void                            *data)
+acpi_ns_attach_data(struct acpi_namespace_node *node,
+                   acpi_object_handler handler, void *data)
 {
-       union acpi_operand_object       *prev_obj_desc;
-       union acpi_operand_object       *obj_desc;
-       union acpi_operand_object       *data_desc;
-
+       union acpi_operand_object *prev_obj_desc;
+       union acpi_operand_object *obj_desc;
+       union acpi_operand_object *data_desc;
 
        /* We only allow one attachment per handler */
 
        prev_obj_desc = NULL;
        obj_desc = node->object;
        while (obj_desc) {
-               if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
-                       (obj_desc->data.handler == handler)) {
+               if ((ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
+                   (obj_desc->data.handler == handler)) {
                        return (AE_ALREADY_EXISTS);
                }
 
@@ -356,7 +341,7 @@ acpi_ns_attach_data (
 
        /* Create an internal object for the data */
 
-       data_desc = acpi_ut_create_internal_object (ACPI_TYPE_LOCAL_DATA);
+       data_desc = acpi_ut_create_internal_object(ACPI_TYPE_LOCAL_DATA);
        if (!data_desc) {
                return (AE_NO_MEMORY);
        }
@@ -368,15 +353,13 @@ acpi_ns_attach_data (
 
        if (prev_obj_desc) {
                prev_obj_desc->common.next_object = data_desc;
-       }
-       else {
+       } else {
                node->object = data_desc;
        }
 
        return (AE_OK);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_detach_data
@@ -392,27 +375,25 @@ acpi_ns_attach_data (
  ******************************************************************************/
 
 acpi_status
-acpi_ns_detach_data (
-       struct acpi_namespace_node      *node,
-       acpi_object_handler             handler)
+acpi_ns_detach_data(struct acpi_namespace_node * node,
+                   acpi_object_handler handler)
 {
-       union acpi_operand_object       *obj_desc;
-       union acpi_operand_object       *prev_obj_desc;
-
+       union acpi_operand_object *obj_desc;
+       union acpi_operand_object *prev_obj_desc;
 
        prev_obj_desc = NULL;
        obj_desc = node->object;
        while (obj_desc) {
-               if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
-                       (obj_desc->data.handler == handler)) {
+               if ((ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
+                   (obj_desc->data.handler == handler)) {
                        if (prev_obj_desc) {
-                               prev_obj_desc->common.next_object = obj_desc->common.next_object;
-                       }
-                       else {
+                               prev_obj_desc->common.next_object =
+                                   obj_desc->common.next_object;
+                       else {
                                node->object = obj_desc->common.next_object;
                        }
 
-                       acpi_ut_remove_reference (obj_desc);
+                       acpi_ut_remove_reference(obj_desc);
                        return (AE_OK);
                }
 
@@ -423,7 +404,6 @@ acpi_ns_detach_data (
        return (AE_NOT_FOUND);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_get_attached_data
@@ -440,18 +420,15 @@ acpi_ns_detach_data (
  ******************************************************************************/
 
 acpi_status
-acpi_ns_get_attached_data (
-       struct acpi_namespace_node      *node,
-       acpi_object_handler             handler,
-       void                            **data)
+acpi_ns_get_attached_data(struct acpi_namespace_node * node,
+                         acpi_object_handler handler, void **data)
 {
-       union acpi_operand_object       *obj_desc;
-
+       union acpi_operand_object *obj_desc;
 
        obj_desc = node->object;
        while (obj_desc) {
-               if ((ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
-                       (obj_desc->data.handler == handler)) {
+               if ((ACPI_GET_OBJECT_TYPE(obj_desc) == ACPI_TYPE_LOCAL_DATA) &&
+                   (obj_desc->data.handler == handler)) {
                        *data = obj_desc->data.pointer;
                        return (AE_OK);
                }
@@ -461,5 +438,3 @@ acpi_ns_get_attached_data (
 
        return (AE_NOT_FOUND);
 }
-
-