Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog
[pandora-kernel.git] / drivers / acpi / utilities / utglobal.c
index 399e64b..e5999c6 100644 (file)
@@ -5,7 +5,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
@@ -43,7 +43,6 @@
 
 #define DEFINE_ACPI_GLOBALS
 
-#include <linux/module.h>
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
@@ -67,8 +66,11 @@ const char *acpi_format_exception(acpi_status status)
        acpi_status sub_status;
        const char *exception = NULL;
 
-       ACPI_FUNCTION_NAME("format_exception");
+       ACPI_FUNCTION_ENTRY();
 
+       /*
+        * Status is composed of two parts, a "type" and an actual code
+        */
        sub_status = (status & ~AE_CODE_MASK);
 
        switch (status & AE_CODE_MASK) {
@@ -116,15 +118,16 @@ const char *acpi_format_exception(acpi_status status)
        }
 
        if (!exception) {
+
                /* Exception code was not recognized */
 
-               ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-                                 "Unknown exception code: 0x%8.8X\n", status));
+               ACPI_ERROR((AE_INFO,
+                           "Unknown exception code: 0x%8.8X", status));
 
-               return ((const char *)"UNKNOWN_STATUS_CODE");
+               exception = "UNKNOWN_STATUS_CODE";
        }
 
-       return ((const char *)exception);
+       return (ACPI_CAST_PTR(const char, exception));
 }
 
 /*******************************************************************************
@@ -140,12 +143,10 @@ const char *acpi_format_exception(acpi_status status)
 
 /* Debug switch - level and trace mask */
 u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
-EXPORT_SYMBOL(acpi_dbg_level);
 
 /* Debug switch - layer (component) mask */
 
 u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
-EXPORT_SYMBOL(acpi_dbg_layer);
 u32 acpi_gbl_nesting_level = 0;
 
 /* Debugger globals */
@@ -180,28 +181,6 @@ const char *acpi_gbl_highest_dstate_names[4] = {
        "_S4D"
 };
 
-/*
- * Strings supported by the _OSI predefined (internal) method.
- * When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.
- */
-const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS] = {
-       /* Operating System Vendor Strings */
-
-       "Linux",
-       "Windows 2000",
-       "Windows 2001",
-       "Windows 2001.1",
-       "Windows 2001 SP0",
-       "Windows 2001 SP1",
-       "Windows 2001 SP2",
-       "Windows 2001 SP3",
-       "Windows 2001 SP4",
-
-       /* Feature Group Strings */
-
-       "Extended Address Space Descriptor"
-};
-
 /*******************************************************************************
  *
  * Namespace globals
@@ -217,23 +196,23 @@ const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS] = {
  * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
  *    perform a Notify() operation on it.
  */
-const struct acpi_predefined_names acpi_gbl_pre_defined_names[] =
-    { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
-{"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
-{"_SB_", ACPI_TYPE_DEVICE, NULL},
-{"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
-{"_TZ_", ACPI_TYPE_THERMAL, NULL},
-{"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
-{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
-{"_GL_", ACPI_TYPE_MUTEX, (char *)1},
+const struct acpi_predefined_names acpi_gbl_pre_defined_names[] = {
+       {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
+       {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL},
+       {"_SB_", ACPI_TYPE_DEVICE, NULL},
+       {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL},
+       {"_TZ_", ACPI_TYPE_THERMAL, NULL},
+       {"_REV", ACPI_TYPE_INTEGER, (char *)ACPI_CA_SUPPORT_LEVEL},
+       {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
+       {"_GL_", ACPI_TYPE_MUTEX, (char *)1},
 
 #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
-{"_OSI", ACPI_TYPE_METHOD, (char *)1},
+       {"_OSI", ACPI_TYPE_METHOD, (char *)1},
 #endif
 
        /* Table terminator */
 
-{NULL, ACPI_TYPE_ANY, NULL}
+       {NULL, ACPI_TYPE_ANY, NULL}
 };
 
 /*
@@ -314,9 +293,9 @@ char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position)
  *
  ******************************************************************************/
 
-struct acpi_table_list acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES];
+struct acpi_table_list acpi_gbl_table_lists[ACPI_TABLE_ID_MAX + 1];
 
-struct acpi_table_support acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES] = {
+struct acpi_table_support acpi_gbl_table_data[ACPI_TABLE_ID_MAX + 1] = {
        /***********    Name,   Signature, Global typed pointer     Signature size,      Type                  How many allowed?,    Contains valid AML? */
 
        /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof(RSDP_SIG) - 1,
@@ -464,7 +443,6 @@ struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] =
 /* Region type decoding */
 
 const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
-/*! [Begin] no source code translation (keep these ASL Keywords as-is) */
        "SystemMemory",
        "SystemIO",
        "PCI_Config",
@@ -473,19 +451,18 @@ const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
        "CMOS",
        "PCIBARTarget",
        "DataTable"
-/*! [End] no source code translation !*/
 };
 
 char *acpi_ut_get_region_name(u8 space_id)
 {
 
        if (space_id >= ACPI_USER_REGION_BEGIN) {
-               return ("user_defined_region");
+               return ("UserDefinedRegion");
        } else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
-               return ("invalid_space_id");
+               return ("InvalidSpaceId");
        }
 
-       return ((char *)acpi_gbl_region_types[space_id]);
+       return (ACPI_CAST_PTR(char, acpi_gbl_region_types[space_id]));
 }
 
 /*******************************************************************************
@@ -504,20 +481,20 @@ char *acpi_ut_get_region_name(u8 space_id)
 
 static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
        "PM_Timer",
-       "global_lock",
-       "power_button",
-       "sleep_button",
-       "real_time_clock",
+       "GlobalLock",
+       "PowerButton",
+       "SleepButton",
+       "RealTimeClock",
 };
 
 char *acpi_ut_get_event_name(u32 event_id)
 {
 
        if (event_id > ACPI_EVENT_MAX) {
-               return ("invalid_event_iD");
+               return ("InvalidEventID");
        }
 
-       return ((char *)acpi_gbl_event_types[event_id]);
+       return (ACPI_CAST_PTR(char, acpi_gbl_event_types[event_id]));
 }
 
 /*******************************************************************************
@@ -550,7 +527,7 @@ static const char *acpi_gbl_ns_type_names[] = {
        /* 02 */ "String",
        /* 03 */ "Buffer",
        /* 04 */ "Package",
-       /* 05 */ "field_unit",
+       /* 05 */ "FieldUnit",
        /* 06 */ "Device",
        /* 07 */ "Event",
        /* 08 */ "Method",
@@ -559,19 +536,19 @@ static const char *acpi_gbl_ns_type_names[] = {
        /* 11 */ "Power",
        /* 12 */ "Processor",
        /* 13 */ "Thermal",
-       /* 14 */ "buffer_field",
-       /* 15 */ "ddb_handle",
-       /* 16 */ "debug_object",
-       /* 17 */ "region_field",
-       /* 18 */ "bank_field",
-       /* 19 */ "index_field",
+       /* 14 */ "BufferField",
+       /* 15 */ "DdbHandle",
+       /* 16 */ "DebugObject",
+       /* 17 */ "RegionField",
+       /* 18 */ "BankField",
+       /* 19 */ "IndexField",
        /* 20 */ "Reference",
        /* 21 */ "Alias",
-       /* 22 */ "method_alias",
+       /* 22 */ "MethodAlias",
        /* 23 */ "Notify",
-       /* 24 */ "addr_handler",
-       /* 25 */ "resource_desc",
-       /* 26 */ "resource_fld",
+       /* 24 */ "AddrHandler",
+       /* 25 */ "ResourceDesc",
+       /* 26 */ "ResourceFld",
        /* 27 */ "Scope",
        /* 28 */ "Extra",
        /* 29 */ "Data",
@@ -582,10 +559,10 @@ char *acpi_ut_get_type_name(acpi_object_type type)
 {
 
        if (type > ACPI_TYPE_INVALID) {
-               return ((char *)acpi_gbl_bad_type);
+               return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
        }
 
-       return ((char *)acpi_gbl_ns_type_names[type]);
+       return (ACPI_CAST_PTR(char, acpi_gbl_ns_type_names[type]));
 }
 
 char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
@@ -628,14 +605,14 @@ char *acpi_ut_get_node_name(void *object)
 
        /* Descriptor must be a namespace node */
 
-       if (node->descriptor != ACPI_DESC_TYPE_NAMED) {
+       if (ACPI_GET_DESCRIPTOR_TYPE(node) != ACPI_DESC_TYPE_NAMED) {
                return ("####");
        }
 
        /* Name must be a valid ACPI name */
 
-       if (!acpi_ut_valid_acpi_name(*(u32 *) node->name.ascii)) {
-               return ("????");
+       if (!acpi_ut_valid_acpi_name(node->name.integer)) {
+               node->name.integer = acpi_ut_repair_name(node->name.integer);
        }
 
        /* Return the name */
@@ -664,9 +641,9 @@ static const char *acpi_gbl_desc_type_names[] = {
        /* 03 */ "State-Update",
        /* 04 */ "State-Package",
        /* 05 */ "State-Control",
-       /* 06 */ "State-root_parse_scope",
-       /* 07 */ "State-parse_scope",
-       /* 08 */ "State-walk_scope",
+       /* 06 */ "State-RootParseScope",
+       /* 07 */ "State-ParseScope",
+       /* 08 */ "State-WalkScope",
        /* 09 */ "State-Result",
        /* 10 */ "State-Notify",
        /* 11 */ "State-Thread",
@@ -684,11 +661,12 @@ char *acpi_ut_get_descriptor_name(void *object)
        }
 
        if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
-               return ((char *)acpi_gbl_bad_type);
+               return (ACPI_CAST_PTR(char, acpi_gbl_bad_type));
        }
 
-       return ((char *)
-               acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE(object)]);
+       return (ACPI_CAST_PTR(char,
+                             acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE
+                                                      (object)]));
 
 }
 
@@ -713,7 +691,7 @@ char *acpi_ut_get_descriptor_name(void *object)
 char *acpi_ut_get_mutex_name(u32 mutex_id)
 {
 
-       if (mutex_id > MAX_MUTEX) {
+       if (mutex_id > ACPI_MAX_MUTEX) {
                return ("Invalid Mutex ID");
        }
 
@@ -737,6 +715,7 @@ u8 acpi_ut_valid_object_type(acpi_object_type type)
 {
 
        if (type > ACPI_TYPE_LOCAL_MAX) {
+
                /* Note: Assumes all TYPEs are contiguous (external/local) */
 
                return (FALSE);
@@ -763,7 +742,7 @@ void acpi_ut_init_globals(void)
        acpi_status status;
        u32 i;
 
-       ACPI_FUNCTION_TRACE("ut_init_globals");
+       ACPI_FUNCTION_TRACE(ut_init_globals);
 
        /* Create all memory caches */
 
@@ -774,19 +753,24 @@ void acpi_ut_init_globals(void)
 
        /* ACPI table structure */
 
-       for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++) {
+       for (i = 0; i < (ACPI_TABLE_ID_MAX + 1); i++) {
                acpi_gbl_table_lists[i].next = NULL;
                acpi_gbl_table_lists[i].count = 0;
        }
 
        /* Mutex locked flags */
 
-       for (i = 0; i < NUM_MUTEX; i++) {
+       for (i = 0; i < ACPI_NUM_MUTEX; i++) {
                acpi_gbl_mutex_info[i].mutex = NULL;
                acpi_gbl_mutex_info[i].thread_id = ACPI_MUTEX_NOT_ACQUIRED;
                acpi_gbl_mutex_info[i].use_count = 0;
        }
 
+       for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) {
+               acpi_gbl_owner_id_mask[i] = 0;
+       }
+       acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;        /* Last ID is never valid */
+
        /* GPE support */
 
        acpi_gbl_gpe_xrupt_list_head = NULL;
@@ -824,7 +808,11 @@ void acpi_ut_init_globals(void)
        acpi_gbl_ns_lookup_count = 0;
        acpi_gbl_ps_find_count = 0;
        acpi_gbl_acpi_hardware_present = TRUE;
-       acpi_gbl_owner_id_mask = 0;
+       acpi_gbl_last_owner_id_index = 0;
+       acpi_gbl_next_owner_id_offset = 0;
+       acpi_gbl_trace_method_name = 0;
+       acpi_gbl_trace_dbg_level = 0;
+       acpi_gbl_trace_dbg_layer = 0;
        acpi_gbl_debugger_configuration = DEBUGGER_THREADING;
        acpi_gbl_db_output_flags = ACPI_DB_CONSOLE_OUTPUT;
 
@@ -836,9 +824,8 @@ void acpi_ut_init_globals(void)
        /* Namespace */
 
        acpi_gbl_root_node = NULL;
-
        acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
-       acpi_gbl_root_node_struct.descriptor = ACPI_DESC_TYPE_NAMED;
+       acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;
        acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
        acpi_gbl_root_node_struct.child = NULL;
        acpi_gbl_root_node_struct.peer = NULL;
@@ -851,3 +838,6 @@ void acpi_ut_init_globals(void)
 
        return_VOID;
 }
+
+ACPI_EXPORT_SYMBOL(acpi_dbg_level)
+ACPI_EXPORT_SYMBOL(acpi_dbg_layer)