diff options
| author | Len Brown <len.brown@intel.com> | 2010-10-25 02:13:09 -0400 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2010-10-25 02:13:09 -0400 |
| commit | 6e04c417aed5b0a5bd6ae80928bbd759fa1faabc (patch) | |
| tree | be657ff1734320850c2ea37d4336b576f07dca31 | |
| parent | 880308089d0abebac365c3a1378b4e3238b100ac (diff) | |
| parent | a210080195c95ebca2a517ee3057d71607aa65e0 (diff) | |
Merge branch 'gpe-defer' into release
| -rw-r--r-- | drivers/acpi/acpica/acevents.h | 5 | ||||
| -rw-r--r-- | drivers/acpi/acpica/acglobal.h | 1 | ||||
| -rw-r--r-- | drivers/acpi/acpica/aclocal.h | 3 | ||||
| -rw-r--r-- | drivers/acpi/acpica/evevent.c | 41 | ||||
| -rw-r--r-- | drivers/acpi/acpica/evgpeblk.c | 47 | ||||
| -rw-r--r-- | drivers/acpi/acpica/evgpeinit.c | 31 | ||||
| -rw-r--r-- | drivers/acpi/acpica/evxface.c | 19 | ||||
| -rw-r--r-- | drivers/acpi/acpica/evxfevnt.c | 61 | ||||
| -rw-r--r-- | drivers/acpi/acpica/utglobal.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/acpica/utxface.c | 13 | ||||
| -rw-r--r-- | drivers/acpi/dock.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/scan.c | 9 | ||||
| -rw-r--r-- | include/acpi/acpixf.h | 2 |
13 files changed, 94 insertions, 140 deletions
diff --git a/drivers/acpi/acpica/acevents.h b/drivers/acpi/acpica/acevents.h index 36867cd70eac..a6f99cc37a19 100644 --- a/drivers/acpi/acpica/acevents.h +++ b/drivers/acpi/acpica/acevents.h | |||
| @@ -105,8 +105,9 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device, | |||
| 105 | struct acpi_gpe_block_info **return_gpe_block); | 105 | struct acpi_gpe_block_info **return_gpe_block); |
| 106 | 106 | ||
| 107 | acpi_status | 107 | acpi_status |
| 108 | acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device, | 108 | acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info, |
| 109 | struct acpi_gpe_block_info *gpe_block); | 109 | struct acpi_gpe_block_info *gpe_block, |
| 110 | void *ignored); | ||
| 110 | 111 | ||
| 111 | acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block); | 112 | acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block); |
| 112 | 113 | ||
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h index b8dbb9bd6962..ad88fcae4eb9 100644 --- a/drivers/acpi/acpica/acglobal.h +++ b/drivers/acpi/acpica/acglobal.h | |||
| @@ -370,6 +370,7 @@ ACPI_EXTERN struct acpi_fixed_event_handler | |||
| 370 | ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; | 370 | ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head; |
| 371 | ACPI_EXTERN struct acpi_gpe_block_info | 371 | ACPI_EXTERN struct acpi_gpe_block_info |
| 372 | *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; | 372 | *acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS]; |
| 373 | ACPI_EXTERN u8 acpi_all_gpes_initialized; | ||
| 373 | 374 | ||
| 374 | /***************************************************************************** | 375 | /***************************************************************************** |
| 375 | * | 376 | * |
diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h index 8acf1e8e479f..2ceb0c05b2d7 100644 --- a/drivers/acpi/acpica/aclocal.h +++ b/drivers/acpi/acpica/aclocal.h | |||
| @@ -413,6 +413,7 @@ struct acpi_handler_info { | |||
| 413 | void *context; /* Context to be passed to handler */ | 413 | void *context; /* Context to be passed to handler */ |
| 414 | struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */ | 414 | struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */ |
| 415 | u8 orig_flags; /* Original misc info about this GPE */ | 415 | u8 orig_flags; /* Original misc info about this GPE */ |
| 416 | u8 orig_enabled; /* Set if the GPE was originally enabled */ | ||
| 416 | }; | 417 | }; |
| 417 | 418 | ||
| 418 | union acpi_gpe_dispatch_info { | 419 | union acpi_gpe_dispatch_info { |
| @@ -457,6 +458,7 @@ struct acpi_gpe_block_info { | |||
| 457 | u32 register_count; /* Number of register pairs in block */ | 458 | u32 register_count; /* Number of register pairs in block */ |
| 458 | u16 gpe_count; /* Number of individual GPEs in block */ | 459 | u16 gpe_count; /* Number of individual GPEs in block */ |
| 459 | u8 block_base_number; /* Base GPE number for this block */ | 460 | u8 block_base_number; /* Base GPE number for this block */ |
| 461 | u8 initialized; /* If set, the GPE block has been initialized */ | ||
| 460 | }; | 462 | }; |
| 461 | 463 | ||
| 462 | /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ | 464 | /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ |
| @@ -473,7 +475,6 @@ struct acpi_gpe_walk_info { | |||
| 473 | struct acpi_gpe_block_info *gpe_block; | 475 | struct acpi_gpe_block_info *gpe_block; |
| 474 | u16 count; | 476 | u16 count; |
| 475 | acpi_owner_id owner_id; | 477 | acpi_owner_id owner_id; |
| 476 | u8 enable_this_gpe; | ||
| 477 | u8 execute_by_owner_id; | 478 | u8 execute_by_owner_id; |
| 478 | }; | 479 | }; |
| 479 | 480 | ||
diff --git a/drivers/acpi/acpica/evevent.c b/drivers/acpi/acpica/evevent.c index 303618889da0..c61c3039c31a 100644 --- a/drivers/acpi/acpica/evevent.c +++ b/drivers/acpi/acpica/evevent.c | |||
| @@ -95,47 +95,6 @@ acpi_status acpi_ev_initialize_events(void) | |||
| 95 | 95 | ||
| 96 | /******************************************************************************* | 96 | /******************************************************************************* |
| 97 | * | 97 | * |
| 98 | * FUNCTION: acpi_ev_install_fadt_gpes | ||
| 99 | * | ||
| 100 | * PARAMETERS: None | ||
| 101 | * | ||
| 102 | * RETURN: Status | ||
| 103 | * | ||
| 104 | * DESCRIPTION: Completes initialization of the FADT-defined GPE blocks | ||
| 105 | * (0 and 1). The HW must be fully initialized at this point, | ||
| 106 | * including global lock support. | ||
| 107 | * | ||
| 108 | ******************************************************************************/ | ||
| 109 | |||
| 110 | acpi_status acpi_ev_install_fadt_gpes(void) | ||
| 111 | { | ||
| 112 | acpi_status status; | ||
| 113 | |||
| 114 | ACPI_FUNCTION_TRACE(ev_install_fadt_gpes); | ||
| 115 | |||
| 116 | /* Namespace must be locked */ | ||
| 117 | |||
| 118 | status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); | ||
| 119 | if (ACPI_FAILURE(status)) { | ||
| 120 | return (status); | ||
| 121 | } | ||
| 122 | |||
| 123 | /* FADT GPE Block 0 */ | ||
| 124 | |||
| 125 | (void)acpi_ev_initialize_gpe_block(acpi_gbl_fadt_gpe_device, | ||
| 126 | acpi_gbl_gpe_fadt_blocks[0]); | ||
| 127 | |||
| 128 | /* FADT GPE Block 1 */ | ||
| 129 | |||
| 130 | (void)acpi_ev_initialize_gpe_block(acpi_gbl_fadt_gpe_device, | ||
| 131 | acpi_gbl_gpe_fadt_blocks[1]); | ||
| 132 | |||
| 133 | (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); | ||
| 134 | return_ACPI_STATUS(AE_OK); | ||
| 135 | } | ||
| 136 | |||
| 137 | /******************************************************************************* | ||
| 138 | * | ||
| 139 | * FUNCTION: acpi_ev_install_xrupt_handlers | 98 | * FUNCTION: acpi_ev_install_xrupt_handlers |
| 140 | * | 99 | * |
| 141 | * PARAMETERS: None | 100 | * PARAMETERS: None |
diff --git a/drivers/acpi/acpica/evgpeblk.c b/drivers/acpi/acpica/evgpeblk.c index 85445fb5844e..020add3eee1c 100644 --- a/drivers/acpi/acpica/evgpeblk.c +++ b/drivers/acpi/acpica/evgpeblk.c | |||
| @@ -363,6 +363,7 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device, | |||
| 363 | gpe_block->gpe_count = (u16)(register_count * ACPI_GPE_REGISTER_WIDTH); | 363 | gpe_block->gpe_count = (u16)(register_count * ACPI_GPE_REGISTER_WIDTH); |
| 364 | gpe_block->register_count = register_count; | 364 | gpe_block->register_count = register_count; |
| 365 | gpe_block->block_base_number = gpe_block_base_number; | 365 | gpe_block->block_base_number = gpe_block_base_number; |
| 366 | gpe_block->initialized = FALSE; | ||
| 366 | 367 | ||
| 367 | ACPI_MEMCPY(&gpe_block->block_address, gpe_block_address, | 368 | ACPI_MEMCPY(&gpe_block->block_address, gpe_block_address, |
| 368 | sizeof(struct acpi_generic_address)); | 369 | sizeof(struct acpi_generic_address)); |
| @@ -385,11 +386,12 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device, | |||
| 385 | return_ACPI_STATUS(status); | 386 | return_ACPI_STATUS(status); |
| 386 | } | 387 | } |
| 387 | 388 | ||
| 389 | acpi_all_gpes_initialized = FALSE; | ||
| 390 | |||
| 388 | /* Find all GPE methods (_Lxx or_Exx) for this block */ | 391 | /* Find all GPE methods (_Lxx or_Exx) for this block */ |
| 389 | 392 | ||
| 390 | walk_info.gpe_block = gpe_block; | 393 | walk_info.gpe_block = gpe_block; |
| 391 | walk_info.gpe_device = gpe_device; | 394 | walk_info.gpe_device = gpe_device; |
| 392 | walk_info.enable_this_gpe = FALSE; | ||
| 393 | walk_info.execute_by_owner_id = FALSE; | 395 | walk_info.execute_by_owner_id = FALSE; |
| 394 | 396 | ||
| 395 | status = acpi_ns_walk_namespace(ACPI_TYPE_METHOD, gpe_device, | 397 | status = acpi_ns_walk_namespace(ACPI_TYPE_METHOD, gpe_device, |
| @@ -434,35 +436,34 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device, | |||
| 434 | ******************************************************************************/ | 436 | ******************************************************************************/ |
| 435 | 437 | ||
| 436 | acpi_status | 438 | acpi_status |
| 437 | acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device, | 439 | acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info, |
| 438 | struct acpi_gpe_block_info *gpe_block) | 440 | struct acpi_gpe_block_info *gpe_block, |
| 441 | void *ignored) | ||
| 439 | { | 442 | { |
| 440 | acpi_status status; | 443 | acpi_status status; |
| 441 | struct acpi_gpe_event_info *gpe_event_info; | 444 | struct acpi_gpe_event_info *gpe_event_info; |
| 442 | u32 gpe_enabled_count; | 445 | u32 gpe_enabled_count; |
| 443 | u32 gpe_index; | 446 | u32 gpe_index; |
| 444 | u32 gpe_number; | ||
| 445 | u32 i; | 447 | u32 i; |
| 446 | u32 j; | 448 | u32 j; |
| 447 | 449 | ||
| 448 | ACPI_FUNCTION_TRACE(ev_initialize_gpe_block); | 450 | ACPI_FUNCTION_TRACE(ev_initialize_gpe_block); |
| 449 | |||
