diff --git a/drivers/acpi/utilities/utglobal.c b/drivers/acpi/utilities/utglobal.c
index 0e4161c..399e64b 100644
--- a/drivers/acpi/utilities/utglobal.c
+++ b/drivers/acpi/utilities/utglobal.c
@@ -48,8 +48,7 @@
 #include <acpi/acnamesp.h>
 
 #define _COMPONENT          ACPI_UTILITIES
-	 ACPI_MODULE_NAME    ("utglobal")
-
+ACPI_MODULE_NAME("utglobal")
 
 /*******************************************************************************
  *
@@ -63,17 +62,12 @@
  * DESCRIPTION: This function translates an ACPI exception into an ASCII string.
  *
  ******************************************************************************/
-
-const char *
-acpi_format_exception (
-	acpi_status                     status)
+const char *acpi_format_exception(acpi_status status)
 {
-	acpi_status                     sub_status;
-	const char                      *exception = NULL;
+	acpi_status sub_status;
+	const char *exception = NULL;
 
-
-	ACPI_FUNCTION_NAME ("format_exception");
-
+	ACPI_FUNCTION_NAME("format_exception");
 
 	sub_status = (status & ~AE_CODE_MASK);
 
@@ -81,35 +75,39 @@
 	case AE_CODE_ENVIRONMENTAL:
 
 		if (sub_status <= AE_CODE_ENV_MAX) {
-			exception = acpi_gbl_exception_names_env [sub_status];
+			exception = acpi_gbl_exception_names_env[sub_status];
 		}
 		break;
 
 	case AE_CODE_PROGRAMMER:
 
 		if (sub_status <= AE_CODE_PGM_MAX) {
-			exception = acpi_gbl_exception_names_pgm [sub_status -1];
+			exception =
+			    acpi_gbl_exception_names_pgm[sub_status - 1];
 		}
 		break;
 
 	case AE_CODE_ACPI_TABLES:
 
 		if (sub_status <= AE_CODE_TBL_MAX) {
-			exception = acpi_gbl_exception_names_tbl [sub_status -1];
+			exception =
+			    acpi_gbl_exception_names_tbl[sub_status - 1];
 		}
 		break;
 
 	case AE_CODE_AML:
 
 		if (sub_status <= AE_CODE_AML_MAX) {
-			exception = acpi_gbl_exception_names_aml [sub_status -1];
+			exception =
+			    acpi_gbl_exception_names_aml[sub_status - 1];
 		}
 		break;
 
 	case AE_CODE_CONTROL:
 
 		if (sub_status <= AE_CODE_CTRL_MAX) {
-			exception = acpi_gbl_exception_names_ctrl [sub_status -1];
+			exception =
+			    acpi_gbl_exception_names_ctrl[sub_status - 1];
 		}
 		break;
 
@@ -120,16 +118,15 @@
 	if (!exception) {
 		/* Exception code was not recognized */
 
-		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
-			"Unknown exception code: 0x%8.8X\n", status));
+		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+				  "Unknown exception code: 0x%8.8X\n", status));
 
-		return ((const char *) "UNKNOWN_STATUS_CODE");
+		return ((const char *)"UNKNOWN_STATUS_CODE");
 	}
 
-	return ((const char *) exception);
+	return ((const char *)exception);
 }
 
-
 /*******************************************************************************
  *
  * Static global variable initialization.
@@ -142,34 +139,32 @@
  */
 
 /* Debug switch - level and trace mask */
-u32                                 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
+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;
+u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
 EXPORT_SYMBOL(acpi_dbg_layer);
-u32                                 acpi_gbl_nesting_level = 0;
-
+u32 acpi_gbl_nesting_level = 0;
 
 /* Debugger globals */
 
-u8                                  acpi_gbl_db_terminate_threads = FALSE;
-u8                                  acpi_gbl_abort_method = FALSE;
-u8                                  acpi_gbl_method_executing = FALSE;
+u8 acpi_gbl_db_terminate_threads = FALSE;
+u8 acpi_gbl_abort_method = FALSE;
+u8 acpi_gbl_method_executing = FALSE;
 
 /* System flags */
 
-u32                                 acpi_gbl_startup_flags = 0;
+u32 acpi_gbl_startup_flags = 0;
 
 /* System starts uninitialized */
 
-u8                                  acpi_gbl_shutdown = TRUE;
+u8 acpi_gbl_shutdown = TRUE;
 
-const u8                            acpi_gbl_decode_to8bit [8] = {1,2,4,8,16,32,64,128};
+const u8 acpi_gbl_decode_to8bit[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };
 
-const char                          *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] =
-{
+const char *acpi_gbl_sleep_state_names[ACPI_S_STATE_COUNT] = {
 	"\\_S0_",
 	"\\_S1_",
 	"\\_S2_",
@@ -178,8 +173,7 @@
 	"\\_S5_"
 };
 
-const char                          *acpi_gbl_highest_dstate_names[4] =
-{
+const char *acpi_gbl_highest_dstate_names[4] = {
 	"_S1D",
 	"_S2D",
 	"_S3D",
@@ -190,8 +184,7 @@
  * 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] =
-{
+const char *acpi_gbl_valid_osi_strings[ACPI_NUM_OSI_STRINGS] = {
 	/* Operating System Vendor Strings */
 
 	"Linux",
@@ -209,7 +202,6 @@
 	"Extended Address Space Descriptor"
 };
 
-
 /*******************************************************************************
  *
  * Namespace globals
@@ -225,74 +217,70 @@
  * 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}
 };
 
 /*
  * Properties of the ACPI Object Types, both internal and external.
  * The table is indexed by values of acpi_object_type
  */
-const u8                                acpi_gbl_ns_properties[] =
-{
-	ACPI_NS_NORMAL,                     /* 00 Any              */
-	ACPI_NS_NORMAL,                     /* 01 Number           */
-	ACPI_NS_NORMAL,                     /* 02 String           */
-	ACPI_NS_NORMAL,                     /* 03 Buffer           */
-	ACPI_NS_NORMAL,                     /* 04 Package          */
-	ACPI_NS_NORMAL,                     /* 05 field_unit       */
-	ACPI_NS_NEWSCOPE,                   /* 06 Device           */
-	ACPI_NS_NORMAL,                     /* 07 Event            */
-	ACPI_NS_NEWSCOPE,                   /* 08 Method           */
-	ACPI_NS_NORMAL,                     /* 09 Mutex            */
-	ACPI_NS_NORMAL,                     /* 10 Region           */
-	ACPI_NS_NEWSCOPE,                   /* 11 Power            */
-	ACPI_NS_NEWSCOPE,                   /* 12 Processor        */
-	ACPI_NS_NEWSCOPE,                   /* 13 Thermal          */
-	ACPI_NS_NORMAL,                     /* 14 buffer_field     */
-	ACPI_NS_NORMAL,                     /* 15 ddb_handle       */
-	ACPI_NS_NORMAL,                     /* 16 Debug Object     */
-	ACPI_NS_NORMAL,                     /* 17 def_field        */
-	ACPI_NS_NORMAL,                     /* 18 bank_field       */
-	ACPI_NS_NORMAL,                     /* 19 index_field      */
-	ACPI_NS_NORMAL,                     /* 20 Reference        */
-	ACPI_NS_NORMAL,                     /* 21 Alias            */
-	ACPI_NS_NORMAL,                     /* 22 method_alias     */
-	ACPI_NS_NORMAL,                     /* 23 Notify           */
-	ACPI_NS_NORMAL,                     /* 24 Address Handler  */
-	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 25 Resource Desc    */
-	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 26 Resource Field   */
-	ACPI_NS_NEWSCOPE,                   /* 27 Scope            */
-	ACPI_NS_NORMAL,                     /* 28 Extra            */
-	ACPI_NS_NORMAL,                     /* 29 Data             */
-	ACPI_NS_NORMAL                      /* 30 Invalid          */
+const u8 acpi_gbl_ns_properties[] = {
+	ACPI_NS_NORMAL,		/* 00 Any              */
+	ACPI_NS_NORMAL,		/* 01 Number           */
+	ACPI_NS_NORMAL,		/* 02 String           */
+	ACPI_NS_NORMAL,		/* 03 Buffer           */
+	ACPI_NS_NORMAL,		/* 04 Package          */
+	ACPI_NS_NORMAL,		/* 05 field_unit       */
+	ACPI_NS_NEWSCOPE,	/* 06 Device           */
+	ACPI_NS_NORMAL,		/* 07 Event            */
+	ACPI_NS_NEWSCOPE,	/* 08 Method           */
+	ACPI_NS_NORMAL,		/* 09 Mutex            */
+	ACPI_NS_NORMAL,		/* 10 Region           */
+	ACPI_NS_NEWSCOPE,	/* 11 Power            */
+	ACPI_NS_NEWSCOPE,	/* 12 Processor        */
+	ACPI_NS_NEWSCOPE,	/* 13 Thermal          */
+	ACPI_NS_NORMAL,		/* 14 buffer_field     */
+	ACPI_NS_NORMAL,		/* 15 ddb_handle       */
+	ACPI_NS_NORMAL,		/* 16 Debug Object     */
+	ACPI_NS_NORMAL,		/* 17 def_field        */
+	ACPI_NS_NORMAL,		/* 18 bank_field       */
+	ACPI_NS_NORMAL,		/* 19 index_field      */
+	ACPI_NS_NORMAL,		/* 20 Reference        */
+	ACPI_NS_NORMAL,		/* 21 Alias            */
+	ACPI_NS_NORMAL,		/* 22 method_alias     */
+	ACPI_NS_NORMAL,		/* 23 Notify           */
+	ACPI_NS_NORMAL,		/* 24 Address Handler  */
+	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,	/* 25 Resource Desc    */
+	ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,	/* 26 Resource Field   */
+	ACPI_NS_NEWSCOPE,	/* 27 Scope            */
+	ACPI_NS_NORMAL,		/* 28 Extra            */
+	ACPI_NS_NORMAL,		/* 29 Data             */
+	ACPI_NS_NORMAL		/* 30 Invalid          */
 };
 
-
 /* Hex to ASCII conversion table */
 
-static const char                   acpi_gbl_hex_to_ascii[] =
-{
-	'0','1','2','3','4','5','6','7',
-	'8','9','A','B','C','D','E','F'
+static const char acpi_gbl_hex_to_ascii[] = {
+	'0', '1', '2', '3', '4', '5', '6', '7',
+	'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
 };
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_hex_to_ascii_char
@@ -307,16 +295,12 @@
  *
  ******************************************************************************/
 
-char
-acpi_ut_hex_to_ascii_char (
-	acpi_integer                    integer,
-	u32                             position)
+char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position)
 {
 
 	return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]);
 }
 
-
 /*******************************************************************************
  *
  * Table name globals
@@ -330,67 +314,139 @@
  *
  ******************************************************************************/
 
-struct acpi_table_list              acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES];
+struct acpi_table_list acpi_gbl_table_lists[NUM_ACPI_TABLE_TYPES];
 
-struct acpi_table_support           acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES] =
-{
+struct acpi_table_support acpi_gbl_table_data[NUM_ACPI_TABLE_TYPES] = {
 	/***********    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, ACPI_TABLE_ROOT     | ACPI_TABLE_SINGLE},
-	/* DSDT 1 */ {DSDT_SIG,  DSDT_SIG, (void *) &acpi_gbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE   | ACPI_TABLE_EXECUTABLE},
-	/* FADT 2 */ {FADT_SIG,  FADT_SIG, (void *) &acpi_gbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_PRIMARY  | ACPI_TABLE_SINGLE},
-	/* FACS 3 */ {FACS_SIG,  FACS_SIG, (void *) &acpi_gbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE},
-	/* PSDT 4 */ {PSDT_SIG,  PSDT_SIG, NULL,                    sizeof (PSDT_SIG)-1, ACPI_TABLE_PRIMARY  | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE},
-	/* SSDT 5 */ {SSDT_SIG,  SSDT_SIG, NULL,                    sizeof (SSDT_SIG)-1, ACPI_TABLE_PRIMARY  | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE},
-	/* XSDT 6 */ {XSDT_SIG,  XSDT_SIG, NULL,                    sizeof (RSDT_SIG)-1, ACPI_TABLE_ROOT     | ACPI_TABLE_SINGLE},
+	/* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof(RSDP_SIG) - 1,
+		      ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}
+	,
+	/* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void *)&acpi_gbl_DSDT,
+		      sizeof(DSDT_SIG) - 1,
+		      ACPI_TABLE_SECONDARY | ACPI_TABLE_SINGLE |
+		      ACPI_TABLE_EXECUTABLE}
+	,
+	/* FADT 2 */ {FADT_SIG, FADT_SIG, (void *)&acpi_gbl_FADT,
+		      sizeof(FADT_SIG) - 1,
+		      ACPI_TABLE_PRIMARY | ACPI_TABLE_SINGLE}
+	,
+	/* FACS 3 */ {FACS_SIG, FACS_SIG, (void *)&acpi_gbl_FACS,
+		      sizeof(FACS_SIG) - 1,
+		      ACPI_TABLE_SECONDARY | ACPI_TABLE_SINGLE}
+	,
+	/* PSDT 4 */ {PSDT_SIG, PSDT_SIG, NULL, sizeof(PSDT_SIG) - 1,
+		      ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE |
+		      ACPI_TABLE_EXECUTABLE}
+	,
+	/* SSDT 5 */ {SSDT_SIG, SSDT_SIG, NULL, sizeof(SSDT_SIG) - 1,
+		      ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE |
+		      ACPI_TABLE_EXECUTABLE}
+	,
+	/* XSDT 6 */ {XSDT_SIG, XSDT_SIG, NULL, sizeof(RSDT_SIG) - 1,
+		      ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}
+	,
 };
 
-
 /******************************************************************************
  *
  * Event and Hardware globals
  *
  ******************************************************************************/
 
-struct acpi_bit_register_info       acpi_gbl_bit_register_info[ACPI_NUM_BITREG] =
-{
+struct acpi_bit_register_info acpi_gbl_bit_register_info[ACPI_NUM_BITREG] = {
 	/* Name                                     Parent Register             Register Bit Position                   Register Bit Mask       */
 
-	/* ACPI_BITREG_TIMER_STATUS         */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_TIMER_STATUS,          ACPI_BITMASK_TIMER_STATUS},
-	/* ACPI_BITREG_BUS_MASTER_STATUS    */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_BUS_MASTER_STATUS,     ACPI_BITMASK_BUS_MASTER_STATUS},
-	/* ACPI_BITREG_GLOBAL_LOCK_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_STATUS},
-	/* ACPI_BITREG_POWER_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_STATUS},
-	/* ACPI_BITREG_SLEEP_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_STATUS},
-	/* ACPI_BITREG_RT_CLOCK_STATUS      */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_STATUS},
-	/* ACPI_BITREG_WAKE_STATUS          */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_WAKE_STATUS,           ACPI_BITMASK_WAKE_STATUS},
-	/* ACPI_BITREG_PCIEXP_WAKE_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,    ACPI_BITMASK_PCIEXP_WAKE_STATUS},
+	/* ACPI_BITREG_TIMER_STATUS         */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_TIMER_STATUS,
+						ACPI_BITMASK_TIMER_STATUS},
+	/* ACPI_BITREG_BUS_MASTER_STATUS    */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_BUS_MASTER_STATUS,
+						ACPI_BITMASK_BUS_MASTER_STATUS},
+	/* ACPI_BITREG_GLOBAL_LOCK_STATUS   */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,
+						ACPI_BITMASK_GLOBAL_LOCK_STATUS},
+	/* ACPI_BITREG_POWER_BUTTON_STATUS  */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_POWER_BUTTON_STATUS,
+						ACPI_BITMASK_POWER_BUTTON_STATUS},
+	/* ACPI_BITREG_SLEEP_BUTTON_STATUS  */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,
+						ACPI_BITMASK_SLEEP_BUTTON_STATUS},
+	/* ACPI_BITREG_RT_CLOCK_STATUS      */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_RT_CLOCK_STATUS,
+						ACPI_BITMASK_RT_CLOCK_STATUS},
+	/* ACPI_BITREG_WAKE_STATUS          */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_WAKE_STATUS,
+						ACPI_BITMASK_WAKE_STATUS},
+	/* ACPI_BITREG_PCIEXP_WAKE_STATUS   */ {ACPI_REGISTER_PM1_STATUS,
+						ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,
+						ACPI_BITMASK_PCIEXP_WAKE_STATUS},
 
-	/* ACPI_BITREG_TIMER_ENABLE         */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_TIMER_ENABLE,          ACPI_BITMASK_TIMER_ENABLE},
-	/* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
-	/* ACPI_BITREG_POWER_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_POWER_BUTTON_ENABLE,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
-	/* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
-	/* ACPI_BITREG_RT_CLOCK_ENABLE      */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_RT_CLOCK_ENABLE,       ACPI_BITMASK_RT_CLOCK_ENABLE},
-	/* ACPI_BITREG_WAKE_ENABLE          */   {ACPI_REGISTER_PM1_ENABLE,   0,                                      0},
-	/* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,   ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
+	/* ACPI_BITREG_TIMER_ENABLE         */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_TIMER_ENABLE,
+						ACPI_BITMASK_TIMER_ENABLE},
+	/* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,
+						ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
+	/* ACPI_BITREG_POWER_BUTTON_ENABLE  */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_POWER_BUTTON_ENABLE,
+						ACPI_BITMASK_POWER_BUTTON_ENABLE},
+	/* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,
+						ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
+	/* ACPI_BITREG_RT_CLOCK_ENABLE      */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_RT_CLOCK_ENABLE,
+						ACPI_BITMASK_RT_CLOCK_ENABLE},
+	/* ACPI_BITREG_WAKE_ENABLE          */ {ACPI_REGISTER_PM1_ENABLE, 0, 0},
+	/* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */ {ACPI_REGISTER_PM1_ENABLE,
+						ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,
+						ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
 
-	/* ACPI_BITREG_SCI_ENABLE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SCI_ENABLE,            ACPI_BITMASK_SCI_ENABLE},
-	/* ACPI_BITREG_BUS_MASTER_RLD       */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_BUS_MASTER_RLD,        ACPI_BITMASK_BUS_MASTER_RLD},
-	/* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,   ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
-	/* ACPI_BITREG_SLEEP_TYPE_A         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_TYPE_X,          ACPI_BITMASK_SLEEP_TYPE_X},
-	/* ACPI_BITREG_SLEEP_TYPE_B         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_TYPE_X,          ACPI_BITMASK_SLEEP_TYPE_X},
-	/* ACPI_BITREG_SLEEP_ENABLE         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_ENABLE,          ACPI_BITMASK_SLEEP_ENABLE},
+	/* ACPI_BITREG_SCI_ENABLE           */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_SCI_ENABLE,
+						ACPI_BITMASK_SCI_ENABLE},
+	/* ACPI_BITREG_BUS_MASTER_RLD       */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_BUS_MASTER_RLD,
+						ACPI_BITMASK_BUS_MASTER_RLD},
+	/* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,
+						ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
+	/* ACPI_BITREG_SLEEP_TYPE_A         */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_SLEEP_TYPE_X,
+						ACPI_BITMASK_SLEEP_TYPE_X},
+	/* ACPI_BITREG_SLEEP_TYPE_B         */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_SLEEP_TYPE_X,
+						ACPI_BITMASK_SLEEP_TYPE_X},
+	/* ACPI_BITREG_SLEEP_ENABLE         */ {ACPI_REGISTER_PM1_CONTROL,
+						ACPI_BITPOSITION_SLEEP_ENABLE,
+						ACPI_BITMASK_SLEEP_ENABLE},
 
-	/* ACPI_BITREG_ARB_DIS              */   {ACPI_REGISTER_PM2_CONTROL,  ACPI_BITPOSITION_ARB_DISABLE,           ACPI_BITMASK_ARB_DISABLE}
+	/* ACPI_BITREG_ARB_DIS              */ {ACPI_REGISTER_PM2_CONTROL,
+						ACPI_BITPOSITION_ARB_DISABLE,
+						ACPI_BITMASK_ARB_DISABLE}
 };
 
-
-struct acpi_fixed_event_info        acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] =
-{
-	/* ACPI_EVENT_PMTIMER       */  {ACPI_BITREG_TIMER_STATUS,          ACPI_BITREG_TIMER_ENABLE,        ACPI_BITMASK_TIMER_STATUS,          ACPI_BITMASK_TIMER_ENABLE},
-	/* ACPI_EVENT_GLOBAL        */  {ACPI_BITREG_GLOBAL_LOCK_STATUS,    ACPI_BITREG_GLOBAL_LOCK_ENABLE,  ACPI_BITMASK_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
-	/* ACPI_EVENT_POWER_BUTTON  */  {ACPI_BITREG_POWER_BUTTON_STATUS,   ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
-	/* ACPI_EVENT_SLEEP_BUTTON  */  {ACPI_BITREG_SLEEP_BUTTON_STATUS,   ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
-	/* ACPI_EVENT_RTC           */  {ACPI_BITREG_RT_CLOCK_STATUS,       ACPI_BITREG_RT_CLOCK_ENABLE,     ACPI_BITMASK_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_ENABLE},
+struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = {
+	/* ACPI_EVENT_PMTIMER       */ {ACPI_BITREG_TIMER_STATUS,
+					ACPI_BITREG_TIMER_ENABLE,
+					ACPI_BITMASK_TIMER_STATUS,
+					ACPI_BITMASK_TIMER_ENABLE},
+	/* ACPI_EVENT_GLOBAL        */ {ACPI_BITREG_GLOBAL_LOCK_STATUS,
+					ACPI_BITREG_GLOBAL_LOCK_ENABLE,
+					ACPI_BITMASK_GLOBAL_LOCK_STATUS,
+					ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
+	/* ACPI_EVENT_POWER_BUTTON  */ {ACPI_BITREG_POWER_BUTTON_STATUS,
+					ACPI_BITREG_POWER_BUTTON_ENABLE,
+					ACPI_BITMASK_POWER_BUTTON_STATUS,
+					ACPI_BITMASK_POWER_BUTTON_ENABLE},
+	/* ACPI_EVENT_SLEEP_BUTTON  */ {ACPI_BITREG_SLEEP_BUTTON_STATUS,
+					ACPI_BITREG_SLEEP_BUTTON_ENABLE,
+					ACPI_BITMASK_SLEEP_BUTTON_STATUS,
+					ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
+	/* ACPI_EVENT_RTC           */ {ACPI_BITREG_RT_CLOCK_STATUS,
+					ACPI_BITREG_RT_CLOCK_ENABLE,
+					ACPI_BITMASK_RT_CLOCK_STATUS,
+					ACPI_BITMASK_RT_CLOCK_ENABLE},
 };
 
 /*******************************************************************************
@@ -407,8 +463,7 @@
 
 /* Region type decoding */
 
-const char                *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] =
-{
+const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
 /*! [Begin] no source code translation (keep these ASL Keywords as-is) */
 	"SystemMemory",
 	"SystemIO",
@@ -421,25 +476,18 @@
 /*! [End] no source code translation !*/
 };
 
-
-char *
-acpi_ut_get_region_name (
-	u8                              space_id)
+char *acpi_ut_get_region_name(u8 space_id)
 {
 
-	if (space_id >= ACPI_USER_REGION_BEGIN)
-	{
+	if (space_id >= ACPI_USER_REGION_BEGIN) {
 		return ("user_defined_region");
-	}
-	else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS)
-	{
+	} else if (space_id >= ACPI_NUM_PREDEFINED_REGIONS) {
 		return ("invalid_space_id");
 	}
 
-	return ((char *) acpi_gbl_region_types[space_id]);
+	return ((char *)acpi_gbl_region_types[space_id]);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_get_event_name
@@ -454,8 +502,7 @@
 
 /* Event type decoding */
 
-static const char                *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] =
-{
+static const char *acpi_gbl_event_types[ACPI_NUM_FIXED_EVENTS] = {
 	"PM_Timer",
 	"global_lock",
 	"power_button",
@@ -463,21 +510,16 @@
 	"real_time_clock",
 };
 
-
-char *
-acpi_ut_get_event_name (
-	u32                             event_id)
+char *acpi_ut_get_event_name(u32 event_id)
 {
 
-	if (event_id > ACPI_EVENT_MAX)
-	{
+	if (event_id > ACPI_EVENT_MAX) {
 		return ("invalid_event_iD");
 	}
 
-	return ((char *) acpi_gbl_event_types[event_id]);
+	return ((char *)acpi_gbl_event_types[event_id]);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_get_type_name
@@ -498,12 +540,11 @@
  * when stored in a table it really means that we have thus far seen no
  * evidence to indicate what type is actually going to be stored for this entry.
  */
-static const char                   acpi_gbl_bad_type[] = "UNDEFINED";
+static const char acpi_gbl_bad_type[] = "UNDEFINED";
 
 /* Printable names of the ACPI object types */
 
-static const char                   *acpi_gbl_ns_type_names[] =
-{
+static const char *acpi_gbl_ns_type_names[] = {
 	/* 00 */ "Untyped",
 	/* 01 */ "Integer",
 	/* 02 */ "String",
@@ -537,35 +578,26 @@
 	/* 30 */ "Invalid"
 };
 
-
-char *
-acpi_ut_get_type_name (
-	acpi_object_type                type)
+char *acpi_ut_get_type_name(acpi_object_type type)
 {
 
-	if (type > ACPI_TYPE_INVALID)
-	{
-		return ((char *) acpi_gbl_bad_type);
+	if (type > ACPI_TYPE_INVALID) {
+		return ((char *)acpi_gbl_bad_type);
 	}
 
-	return ((char *) acpi_gbl_ns_type_names[type]);
+	return ((char *)acpi_gbl_ns_type_names[type]);
 }
 
-
-char *
-acpi_ut_get_object_type_name (
-	union acpi_operand_object       *obj_desc)
+char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc)
 {
 
-	if (!obj_desc)
-	{
+	if (!obj_desc) {
 		return ("[NULL Object Descriptor]");
 	}
 
-	return (acpi_ut_get_type_name (ACPI_GET_OBJECT_TYPE (obj_desc)));
+	return (acpi_ut_get_type_name(ACPI_GET_OBJECT_TYPE(obj_desc)));
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_get_node_name
@@ -578,39 +610,31 @@
  *
  ******************************************************************************/
 
-char *
-acpi_ut_get_node_name (
-	void                            *object)
+char *acpi_ut_get_node_name(void *object)
 {
-	struct acpi_namespace_node      *node = (struct acpi_namespace_node *) object;
-
+	struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
 
 	/* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
 
-	if (!object)
-	{
+	if (!object) {
 		return ("NULL");
 	}
 
 	/* Check for Root node */
 
-	if ((object == ACPI_ROOT_OBJECT) ||
-		(object == acpi_gbl_root_node))
-	{
+	if ((object == ACPI_ROOT_OBJECT) || (object == acpi_gbl_root_node)) {
 		return ("\"\\\" ");
 	}
 
 	/* Descriptor must be a namespace node */
 
-	if (node->descriptor != ACPI_DESC_TYPE_NAMED)
-	{
+	if (node->descriptor != ACPI_DESC_TYPE_NAMED) {
 		return ("####");
 	}
 
 	/* Name must be a valid ACPI name */
 
-	if (!acpi_ut_valid_acpi_name (* (u32 *) node->name.ascii))
-	{
+	if (!acpi_ut_valid_acpi_name(*(u32 *) node->name.ascii)) {
 		return ("????");
 	}
 
@@ -619,7 +643,6 @@
 	return (node->name.ascii);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_get_descriptor_name
@@ -634,8 +657,7 @@
 
 /* Printable names of object descriptor types */
 
-static const char                   *acpi_gbl_desc_type_names[] =
-{
+static const char *acpi_gbl_desc_type_names[] = {
 	/* 00 */ "Invalid",
 	/* 01 */ "Cached",
 	/* 02 */ "State-Generic",
@@ -654,27 +676,22 @@
 	/* 15 */ "Node"
 };
 
-
-char *
-acpi_ut_get_descriptor_name (
-	void                            *object)
+char *acpi_ut_get_descriptor_name(void *object)
 {
 
-	if (!object)
-	{
+	if (!object) {
 		return ("NULL OBJECT");
 	}
 
-	if (ACPI_GET_DESCRIPTOR_TYPE (object) > ACPI_DESC_TYPE_MAX)
-	{
-		return ((char *) acpi_gbl_bad_type);
+	if (ACPI_GET_DESCRIPTOR_TYPE(object) > ACPI_DESC_TYPE_MAX) {
+		return ((char *)acpi_gbl_bad_type);
 	}
 
-	return ((char *) acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE (object)]);
+	return ((char *)
+		acpi_gbl_desc_type_names[ACPI_GET_DESCRIPTOR_TYPE(object)]);
 
 }
 
-
 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
 /*
  * Strings and procedures used for debug only
@@ -693,13 +710,10 @@
  *
  ******************************************************************************/
 
-char *
-acpi_ut_get_mutex_name (
-	u32                             mutex_id)
+char *acpi_ut_get_mutex_name(u32 mutex_id)
 {
 
-	if (mutex_id > MAX_MUTEX)
-	{
+	if (mutex_id > MAX_MUTEX) {
 		return ("Invalid Mutex ID");
 	}
 
@@ -707,7 +721,6 @@
 }
 #endif
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_valid_object_type
@@ -720,13 +733,10 @@
  *
  ******************************************************************************/
 
-u8
-acpi_ut_valid_object_type (
-	acpi_object_type                type)
+u8 acpi_ut_valid_object_type(acpi_object_type type)
 {
 
-	if (type > ACPI_TYPE_LOCAL_MAX)
-	{
+	if (type > ACPI_TYPE_LOCAL_MAX) {
 		/* Note: Assumes all TYPEs are contiguous (external/local) */
 
 		return (FALSE);
@@ -735,7 +745,6 @@
 	return (TRUE);
 }
 
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_init_globals
@@ -749,106 +758,96 @@
  *
  ******************************************************************************/
 
-void
-acpi_ut_init_globals (
-	void)
+void acpi_ut_init_globals(void)
 {
-	acpi_status                     status;
-	u32                             i;
+	acpi_status status;
+	u32 i;
 
-
-	ACPI_FUNCTION_TRACE ("ut_init_globals");
-
+	ACPI_FUNCTION_TRACE("ut_init_globals");
 
 	/* Create all memory caches */
 
-	status = acpi_ut_create_caches ();
-	if (ACPI_FAILURE (status))
-	{
+	status = acpi_ut_create_caches();
+	if (ACPI_FAILURE(status)) {
 		return;
 	}
 
 	/* ACPI table structure */
 
-	for (i = 0; i < NUM_ACPI_TABLE_TYPES; i++)
-	{
-		acpi_gbl_table_lists[i].next        = NULL;
-		acpi_gbl_table_lists[i].count       = 0;
+	for (i = 0; i < NUM_ACPI_TABLE_TYPES; 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++)
-	{
-		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 < 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;
 	}
 
 	/* GPE support */
 
-	acpi_gbl_gpe_xrupt_list_head        = NULL;
-	acpi_gbl_gpe_fadt_blocks[0]         = NULL;
-	acpi_gbl_gpe_fadt_blocks[1]         = NULL;
+	acpi_gbl_gpe_xrupt_list_head = NULL;
+	acpi_gbl_gpe_fadt_blocks[0] = NULL;
+	acpi_gbl_gpe_fadt_blocks[1] = NULL;
 
 	/* Global notify handlers */
 
-	acpi_gbl_system_notify.handler      = NULL;
-	acpi_gbl_device_notify.handler      = NULL;
-	acpi_gbl_exception_handler          = NULL;
-	acpi_gbl_init_handler               = NULL;
+	acpi_gbl_system_notify.handler = NULL;
+	acpi_gbl_device_notify.handler = NULL;
+	acpi_gbl_exception_handler = NULL;
+	acpi_gbl_init_handler = NULL;
 
 	/* Global "typed" ACPI table pointers */
 
-	acpi_gbl_RSDP                       = NULL;
-	acpi_gbl_XSDT                       = NULL;
-	acpi_gbl_FACS                       = NULL;
-	acpi_gbl_FADT                       = NULL;
-	acpi_gbl_DSDT                       = NULL;
+	acpi_gbl_RSDP = NULL;
+	acpi_gbl_XSDT = NULL;
+	acpi_gbl_FACS = NULL;
+	acpi_gbl_FADT = NULL;
+	acpi_gbl_DSDT = NULL;
 
 	/* Global Lock support */
 
-	acpi_gbl_global_lock_acquired       = FALSE;
-	acpi_gbl_global_lock_thread_count   = 0;
-	acpi_gbl_global_lock_handle         = 0;
+	acpi_gbl_global_lock_acquired = FALSE;
+	acpi_gbl_global_lock_thread_count = 0;
+	acpi_gbl_global_lock_handle = 0;
 
 	/* Miscellaneous variables */
 
-	acpi_gbl_table_flags                = ACPI_PHYSICAL_POINTER;
-	acpi_gbl_rsdp_original_location     = 0;
-	acpi_gbl_cm_single_step             = FALSE;
-	acpi_gbl_db_terminate_threads       = FALSE;
-	acpi_gbl_shutdown                   = FALSE;
-	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_debugger_configuration     = DEBUGGER_THREADING;
-	acpi_gbl_db_output_flags            = ACPI_DB_CONSOLE_OUTPUT;
+	acpi_gbl_table_flags = ACPI_PHYSICAL_POINTER;
+	acpi_gbl_rsdp_original_location = 0;
+	acpi_gbl_cm_single_step = FALSE;
+	acpi_gbl_db_terminate_threads = FALSE;
+	acpi_gbl_shutdown = FALSE;
+	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_debugger_configuration = DEBUGGER_THREADING;
+	acpi_gbl_db_output_flags = ACPI_DB_CONSOLE_OUTPUT;
 
 	/* Hardware oriented */
 
-	acpi_gbl_events_initialized         = FALSE;
-	acpi_gbl_system_awake_and_running   = TRUE;
+	acpi_gbl_events_initialized = FALSE;
+	acpi_gbl_system_awake_and_running = TRUE;
 
 	/* Namespace */
 
-	acpi_gbl_root_node                  = NULL;
+	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.type      = ACPI_TYPE_DEVICE;
-	acpi_gbl_root_node_struct.child     = NULL;
-	acpi_gbl_root_node_struct.peer      = NULL;
-	acpi_gbl_root_node_struct.object    = NULL;
-	acpi_gbl_root_node_struct.flags     = ANOBJ_END_OF_PEER_LIST;
-
+	acpi_gbl_root_node_struct.type = ACPI_TYPE_DEVICE;
+	acpi_gbl_root_node_struct.child = NULL;
+	acpi_gbl_root_node_struct.peer = NULL;
+	acpi_gbl_root_node_struct.object = NULL;
+	acpi_gbl_root_node_struct.flags = ANOBJ_END_OF_PEER_LIST;
 
 #ifdef ACPI_DEBUG_OUTPUT
-	acpi_gbl_lowest_stack_pointer       = ACPI_SIZE_MAX;
+	acpi_gbl_lowest_stack_pointer = ACPI_SIZE_MAX;
 #endif
 
 	return_VOID;
 }
-
-
