diff options
Diffstat (limited to 'drivers/acpi/ec.c')
| -rw-r--r-- | drivers/acpi/ec.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 1514e71b723d..acfe8830da14 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
| @@ -428,24 +428,21 @@ static void acpi_ec_gpe_query(void *ec_cxt) | |||
| 428 | static char object_name[8]; | 428 | static char object_name[8]; |
| 429 | 429 | ||
| 430 | if (!ec) | 430 | if (!ec) |
| 431 | goto end; | 431 | return; |
| 432 | 432 | ||
| 433 | value = acpi_ec_read_status(ec); | 433 | value = acpi_ec_read_status(ec); |
| 434 | 434 | ||
| 435 | if (!(value & ACPI_EC_FLAG_SCI)) | 435 | if (!(value & ACPI_EC_FLAG_SCI)) |
| 436 | goto end; | 436 | return; |
| 437 | 437 | ||
| 438 | if (acpi_ec_query(ec, &value)) | 438 | if (acpi_ec_query(ec, &value)) |
| 439 | goto end; | 439 | return; |
| 440 | 440 | ||
| 441 | snprintf(object_name, 8, "_Q%2.2X", value); | 441 | snprintf(object_name, 8, "_Q%2.2X", value); |
| 442 | 442 | ||
| 443 | printk(KERN_INFO PREFIX "evaluating %s\n", object_name); | 443 | printk(KERN_INFO PREFIX "evaluating %s\n", object_name); |
| 444 | 444 | ||
| 445 | acpi_evaluate_object(ec->handle, object_name, NULL, NULL); | 445 | acpi_evaluate_object(ec->handle, object_name, NULL, NULL); |
| 446 | |||
| 447 | end: | ||
| 448 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); | ||
| 449 | } | 446 | } |
| 450 | 447 | ||
| 451 | static u32 acpi_ec_gpe_handler(void *data) | 448 | static u32 acpi_ec_gpe_handler(void *data) |
| @@ -454,7 +451,6 @@ static u32 acpi_ec_gpe_handler(void *data) | |||
| 454 | u8 value; | 451 | u8 value; |
| 455 | struct acpi_ec *ec = (struct acpi_ec *)data; | 452 | struct acpi_ec *ec = (struct acpi_ec *)data; |
| 456 | 453 | ||
| 457 | acpi_clear_gpe(NULL, ec->gpe_bit, ACPI_ISR); | ||
| 458 | 454 | ||
| 459 | if (acpi_ec_mode == EC_INTR) { | 455 | if (acpi_ec_mode == EC_INTR) { |
| 460 | wake_up(&ec->wait); | 456 | wake_up(&ec->wait); |
| @@ -464,7 +460,7 @@ static u32 acpi_ec_gpe_handler(void *data) | |||
| 464 | if (value & ACPI_EC_FLAG_SCI) { | 460 | if (value & ACPI_EC_FLAG_SCI) { |
| 465 | status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec); | 461 | status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec); |
| 466 | } | 462 | } |
| 467 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_ISR); | 463 | |
| 468 | return status == AE_OK ? | 464 | return status == AE_OK ? |
| 469 | ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED; | 465 | ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED; |
| 470 | } | 466 | } |
