===================================================================
@@ -258,7 +258,6 @@ acpi_ev_save_method_info(acpi_handle obj
u32 gpe_number;
char name[ACPI_NAME_SIZE + 1];
u8 type;
- acpi_status status;
ACPI_FUNCTION_TRACE(ev_save_method_info);
@@ -338,7 +337,7 @@ acpi_ev_save_method_info(acpi_handle obj
ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
"Registered GPE method %s as GPE number 0x%.2X\n",
name, gpe_number));
- return_ACPI_STATUS(status);
+ return_ACPI_STATUS(AE_OK);
}
/*******************************************************************************
@@ -1005,6 +1004,9 @@ acpi_ev_initialize_gpe_block(struct acpi
ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK,
acpi_ev_match_prw_and_gpe, NULL,
&gpe_info, NULL);
+ if (ACPI_FAILURE(status))
+ ACPI_ERROR((AE_INFO,
+ "Detection of wake GPEs failed\n"));
}
/*
@@ -1014,30 +1016,36 @@ acpi_ev_initialize_gpe_block(struct acpi
*/
wake_gpe_count = 0;
gpe_enabled_count = 0;
+ if (gpe_device == acpi_gbl_fadt_gpe_device)
+ gpe_device = NULL;
for (i = 0; i < gpe_block->register_count; i++) {
for (j = 0; j < 8; j++) {
- int gpe_number = i * ACPI_GPE_REGISTER_WIDTH + j;
+ acpi_size gpe_index;
+ int gpe_number;
/* Get the info block for this particular GPE */
- gpe_event_info = &gpe_block->event_info[(acpi_size)
- gpe_number];
+ gpe_index = (acpi_size)i * ACPI_GPE_REGISTER_WIDTH + j;
+ gpe_event_info = &gpe_block->event_info[gpe_index];
if (gpe_event_info->flags & ACPI_GPE_CAN_WAKE) {
wake_gpe_count++;
- continue;
+ if (acpi_gbl_leave_wake_gpes_disabled)
+ continue;
}
- if (gpe_event_info->flags & ACPI_GPE_DISPATCH_METHOD) {
+ if (!(gpe_event_info->flags & ACPI_GPE_DISPATCH_METHOD))
+ continue;
+
+ gpe_number = gpe_index + gpe_block->block_base_number;
+ status = acpi_ref_runtime_gpe(gpe_device, gpe_number);
+ if (ACPI_FAILURE(status))
+ ACPI_ERROR((AE_INFO,
+ "Failed to enable GPE %02X\n",
+ gpe_number));
+ else
gpe_enabled_count++;
- if (gpe_device == acpi_gbl_fadt_gpe_device)
- status = acpi_ref_runtime_gpe(NULL,
- gpe_number);
- else
- status = acpi_ref_runtime_gpe(gpe_device,
- gpe_number);
- }
}
}