Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / acpi / tables / tbgetall.c
index adc4270..134e5dc 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
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include <acpi/acpi.h>
 #include <acpi/actables.h>
 
-
 #define _COMPONENT          ACPI_TABLES
-        ACPI_MODULE_NAME    ("tbgetall")
+ACPI_MODULE_NAME("tbgetall")
+
+/* Local prototypes */
+static acpi_status
+acpi_tb_get_primary_table(struct acpi_pointer *address,
+                         struct acpi_table_desc *table_info);
 
+static acpi_status
+acpi_tb_get_secondary_table(struct acpi_pointer *address,
+                           acpi_string signature,
+                           struct acpi_table_desc *table_info);
 
 /*******************************************************************************
  *
  *
  ******************************************************************************/
 
-acpi_status
-acpi_tb_get_primary_table (
-       struct acpi_pointer             *address,
-       struct acpi_table_desc          *table_info)
+static acpi_status
+acpi_tb_get_primary_table(struct acpi_pointer *address,
+                         struct acpi_table_desc *table_info)
 {
-       acpi_status                     status;
-       struct acpi_table_header        header;
-
-
-       ACPI_FUNCTION_TRACE ("tb_get_primary_table");
+       acpi_status status;
+       struct acpi_table_header header;
 
+       ACPI_FUNCTION_TRACE("tb_get_primary_table");
 
        /* Ignore a NULL address in the RSDT */
 
        if (!address->pointer.value) {
-               return_ACPI_STATUS (AE_OK);
+               return_ACPI_STATUS(AE_OK);
        }
 
-       /*
-        * Get the header in order to get signature and table size
-        */
-       status = acpi_tb_get_table_header (address, &header);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       /* Get the header in order to get signature and table size */
+
+       status = acpi_tb_get_table_header(address, &header);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Clear the table_info */
 
-       ACPI_MEMSET (table_info, 0, sizeof (struct acpi_table_desc));
+       ACPI_MEMSET(table_info, 0, sizeof(struct acpi_table_desc));
 
        /*
         * Check the table signature and make sure it is recognized.
         * Also checks the header checksum
         */
        table_info->pointer = &header;
-       status = acpi_tb_recognize_table (table_info, ACPI_TABLE_PRIMARY);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_recognize_table(table_info, ACPI_TABLE_PRIMARY);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Get the entire table */
 
-       status = acpi_tb_get_table_body (address, &header, table_info);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_get_table_body(address, &header, table_info);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Install the table */
 
-       status = acpi_tb_install_table (table_info);
-       return_ACPI_STATUS (status);
+       status = acpi_tb_install_table(table_info);
+       return_ACPI_STATUS(status);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_tb_get_secondary_table
@@ -130,32 +132,30 @@ acpi_tb_get_primary_table (
  *
  ******************************************************************************/
 
-acpi_status
-acpi_tb_get_secondary_table (
-       struct acpi_pointer             *address,
-       acpi_string                     signature,
-       struct acpi_table_desc          *table_info)
+static acpi_status
+acpi_tb_get_secondary_table(struct acpi_pointer *address,
+                           acpi_string signature,
+                           struct acpi_table_desc *table_info)
 {
-       acpi_status                     status;
-       struct acpi_table_header        header;
-
-
-       ACPI_FUNCTION_TRACE_STR ("tb_get_secondary_table", signature);
+       acpi_status status;
+       struct acpi_table_header header;
 
+       ACPI_FUNCTION_TRACE_STR("tb_get_secondary_table", signature);
 
        /* Get the header in order to match the signature */
 
-       status = acpi_tb_get_table_header (address, &header);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_get_table_header(address, &header);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Signature must match request */
 
-       if (ACPI_STRNCMP (header.signature, signature, ACPI_NAME_SIZE)) {
-               ACPI_REPORT_ERROR (("Incorrect table signature - wanted [%s] found [%4.4s]\n",
-                       signature, header.signature));
-               return_ACPI_STATUS (AE_BAD_SIGNATURE);
+       if (ACPI_STRNCMP(header.signature, signature, ACPI_NAME_SIZE)) {
+               ACPI_ERROR((AE_INFO,
+                           "Incorrect table signature - wanted [%s] found [%4.4s]",
+                           signature, header.signature));
+               return_ACPI_STATUS(AE_BAD_SIGNATURE);
        }
 
        /*
@@ -163,25 +163,24 @@ acpi_tb_get_secondary_table (
         * Also checks the header checksum
         */
        table_info->pointer = &header;
-       status = acpi_tb_recognize_table (table_info, ACPI_TABLE_SECONDARY);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_recognize_table(table_info, ACPI_TABLE_SECONDARY);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Get the entire table */
 
-       status = acpi_tb_get_table_body (address, &header, table_info);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_get_table_body(address, &header, table_info);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
        /* Install the table */
 
-       status = acpi_tb_install_table (table_info);
-       return_ACPI_STATUS (status);
+       status = acpi_tb_install_table(table_info);
+       return_ACPI_STATUS(status);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_tb_get_required_tables
@@ -201,23 +200,19 @@ acpi_tb_get_secondary_table (
  *
  ******************************************************************************/
 
-acpi_status
-acpi_tb_get_required_tables (
-       void)
+acpi_status acpi_tb_get_required_tables(void)
 {
-       acpi_status                     status = AE_OK;
-       u32                             i;
-       struct acpi_table_desc          table_info;
-       struct acpi_pointer             address;
+       acpi_status status = AE_OK;
+       u32 i;
+       struct acpi_table_desc table_info;
+       struct acpi_pointer address;
 
+       ACPI_FUNCTION_TRACE("tb_get_required_tables");
 
-       ACPI_FUNCTION_TRACE ("tb_get_required_tables");
+       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "%d ACPI tables in RSDT\n",
+                         acpi_gbl_rsdt_table_count));
 
-       ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%d ACPI tables in RSDT\n",
-               acpi_gbl_rsdt_table_count));
-
-
-       address.pointer_type  = acpi_gbl_table_flags | ACPI_LOGICAL_ADDRESSING;
+       address.pointer_type = acpi_gbl_table_flags | ACPI_LOGICAL_ADDRESSING;
 
        /*
         * Loop through all table pointers found in RSDT.
@@ -236,78 +231,80 @@ acpi_tb_get_required_tables (
                 * Get the tables needed by this subsystem (FADT and any SSDTs).
                 * NOTE: All other tables are completely ignored at this time.
                 */
-               status = acpi_tb_get_primary_table (&address, &table_info);
+               status = acpi_tb_get_primary_table(&address, &table_info);
                if ((status != AE_OK) && (status != AE_TABLE_NOT_SUPPORTED)) {
-                       ACPI_REPORT_WARNING (("%s, while getting table at %8.8X%8.8X\n",
-                               acpi_format_exception (status),
-                               ACPI_FORMAT_UINT64 (address.pointer.value)));
+                       ACPI_WARNING((AE_INFO,
+                                     "%s, while getting table at %8.8X%8.8X",
+                                     acpi_format_exception(status),
+                                     ACPI_FORMAT_UINT64(address.pointer.
+                                                        value)));
                }
        }
 
        /* We must have a FADT to continue */
 
        if (!acpi_gbl_FADT) {
-               ACPI_REPORT_ERROR (("No FADT present in RSDT/XSDT\n"));
-               return_ACPI_STATUS (AE_NO_ACPI_TABLES);
+               ACPI_ERROR((AE_INFO, "No FADT present in RSDT/XSDT"));
+               return_ACPI_STATUS(AE_NO_ACPI_TABLES);
        }
 
        /*
-        * Convert the FADT to a common format.  This allows earlier revisions of the
-        * table to coexist with newer versions, using common access code.
+        * Convert the FADT to a common format.  This allows earlier revisions of
+        * the table to coexist with newer versions, using common access code.
         */
-       status = acpi_tb_convert_table_fadt ();
-       if (ACPI_FAILURE (status)) {
-               ACPI_REPORT_ERROR (("Could not convert FADT to internal common format\n"));
-               return_ACPI_STATUS (status);
+       status = acpi_tb_convert_table_fadt();
+       if (ACPI_FAILURE(status)) {
+               ACPI_ERROR((AE_INFO,
+                           "Could not convert FADT to internal common format"));
+               return_ACPI_STATUS(status);
        }
 
-       /*
-        * Get the FACS (Pointed to by the FADT)
-        */
+       /* Get the FACS (Pointed to by the FADT) */
+
        address.pointer.value = acpi_gbl_FADT->xfirmware_ctrl;
 
-       status = acpi_tb_get_secondary_table (&address, FACS_SIG, &table_info);
-       if (ACPI_FAILURE (status)) {
-               ACPI_REPORT_ERROR (("Could not get/install the FACS, %s\n",
-                       acpi_format_exception (status)));
-               return_ACPI_STATUS (status);
+       status = acpi_tb_get_secondary_table(&address, FACS_SIG, &table_info);
+       if (ACPI_FAILURE(status)) {
+               ACPI_EXCEPTION((AE_INFO, status,
+                               "Could not get/install the FACS"));
+               return_ACPI_STATUS(status);
        }
 
        /*
         * Create the common FACS pointer table
         * (Contains pointers to the original table)
         */
-       status = acpi_tb_build_common_facs (&table_info);
-       if (ACPI_FAILURE (status)) {
-               return_ACPI_STATUS (status);
+       status = acpi_tb_build_common_facs(&table_info);
+       if (ACPI_FAILURE(status)) {
+               return_ACPI_STATUS(status);
        }
 
-       /*
-        * Get/install the DSDT (Pointed to by the FADT)
-        */
+       /* Get/install the DSDT (Pointed to by the FADT) */
+
        address.pointer.value = acpi_gbl_FADT->Xdsdt;
 
-       status = acpi_tb_get_secondary_table (&address, DSDT_SIG, &table_info);
-       if (ACPI_FAILURE (status)) {
-               ACPI_REPORT_ERROR (("Could not get/install the DSDT\n"));
-               return_ACPI_STATUS (status);
+       status = acpi_tb_get_secondary_table(&address, DSDT_SIG, &table_info);
+       if (ACPI_FAILURE(status)) {
+               ACPI_ERROR((AE_INFO, "Could not get/install the DSDT"));
+               return_ACPI_STATUS(status);
        }
 
        /* Set Integer Width (32/64) based upon DSDT revision */
 
-       acpi_ut_set_integer_width (acpi_gbl_DSDT->revision);
+       acpi_ut_set_integer_width(acpi_gbl_DSDT->revision);
 
        /* Dump the entire DSDT */
 
-       ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
-               "Hex dump of entire DSDT, size %d (0x%X), Integer width = %d\n",
-               acpi_gbl_DSDT->length, acpi_gbl_DSDT->length, acpi_gbl_integer_bit_width));
-       ACPI_DUMP_BUFFER ((u8 *) acpi_gbl_DSDT, acpi_gbl_DSDT->length);
+       ACPI_DEBUG_PRINT((ACPI_DB_TABLES,
+                         "Hex dump of entire DSDT, size %d (0x%X), Integer width = %d\n",
+                         acpi_gbl_DSDT->length, acpi_gbl_DSDT->length,
+                         acpi_gbl_integer_bit_width));
+
+       ACPI_DUMP_BUFFER(ACPI_CAST_PTR(u8, acpi_gbl_DSDT),
+                        acpi_gbl_DSDT->length);
 
        /* Always delete the RSDP mapping, we are done with it */
 
-       acpi_tb_delete_tables_by_type (ACPI_TABLE_RSDP);
-       return_ACPI_STATUS (status);
+       acpi_tb_delete_tables_by_type(ACPI_TABLE_RSDP);
+       return_ACPI_STATUS(status);
 }
-
-