diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/acpi/ec.c | 6 | ||||
| -rw-r--r-- | drivers/acpi/internal.h | 1 | ||||
| -rw-r--r-- | drivers/acpi/sleep.c | 7 |
3 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 30a572956557..bb94cf0731fe 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
| @@ -1034,6 +1034,12 @@ void acpi_ec_unblock_transactions(void) | |||
| 1034 | acpi_ec_start(first_ec, true); | 1034 | acpi_ec_start(first_ec, true); |
| 1035 | } | 1035 | } |
| 1036 | 1036 | ||
| 1037 | void acpi_ec_dispatch_gpe(void) | ||
| 1038 | { | ||
| 1039 | if (first_ec) | ||
| 1040 | acpi_dispatch_gpe(NULL, first_ec->gpe); | ||
| 1041 | } | ||
| 1042 | |||
| 1037 | /* -------------------------------------------------------------------------- | 1043 | /* -------------------------------------------------------------------------- |
| 1038 | Event Management | 1044 | Event Management |
| 1039 | -------------------------------------------------------------------------- */ | 1045 | -------------------------------------------------------------------------- */ |
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 1d0a501bc7f0..530a3f675490 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h | |||
| @@ -188,6 +188,7 @@ int acpi_ec_ecdt_probe(void); | |||
| 188 | int acpi_ec_dsdt_probe(void); | 188 | int acpi_ec_dsdt_probe(void); |
| 189 | void acpi_ec_block_transactions(void); | 189 | void acpi_ec_block_transactions(void); |
| 190 | void acpi_ec_unblock_transactions(void); | 190 | void acpi_ec_unblock_transactions(void); |
| 191 | void acpi_ec_dispatch_gpe(void); | ||
| 191 | int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit, | 192 | int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit, |
| 192 | acpi_handle handle, acpi_ec_query_func func, | 193 | acpi_handle handle, acpi_ec_query_func func, |
| 193 | void *data); | 194 | void *data); |
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 974e58457697..5d0486f1cfcd 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c | |||
| @@ -989,6 +989,13 @@ static void acpi_s2idle_wake(void) | |||
| 989 | !irqd_is_wakeup_armed(irq_get_irq_data(acpi_sci_irq))) { | 989 | !irqd_is_wakeup_armed(irq_get_irq_data(acpi_sci_irq))) { |
| 990 | pm_system_cancel_wakeup(); | 990 | pm_system_cancel_wakeup(); |
| 991 | s2idle_wakeup = true; | 991 | s2idle_wakeup = true; |
| 992 | /* | ||
| 993 | * On some platforms with the LPS0 _DSM device noirq resume | ||
| 994 | * takes too much time for EC wakeup events to survive, so look | ||
| 995 | * for them now. | ||
| 996 | */ | ||
| 997 | if (lps0_device_handle) | ||
| 998 | acpi_ec_dispatch_gpe(); | ||
| 992 | } | 999 | } |
| 993 | } | 1000 | } |
| 994 | 1001 | ||
