mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-29 13:06:00 +08:00
ACPI / EC: Fix regression related to triggering source of EC event handling
Originally the Samsung quirks removed by commit4c237371
can be covered by commite923e8e7
and ec_freeze_events=Y mode. But commit9c40f956
changed ec_freeze_events=Y back to N, making this problem re-surface. Actually, if commite923e8e7
is robust enough, we can freely change ec_freeze_events mode, so this patch fixes the issue by improving commite923e8e7
. Related commits listed in the merged order: Commit:e923e8e79e
Subject: ACPI / EC: Fix an issue that SCI_EVT cannot be detected after event is enabled Commit:4c237371f2
Subject: ACPI / EC: Remove old CLEAR_ON_RESUME quirk Commit:9c40f956ce
Subject: Revert "ACPI / EC: Enable event freeze mode..." to fix a regression This patch not only fixes the reported post-resume EC event triggering source issue, but also fixes an unreported similar issue related to the driver bind by adding EC event triggering source in ec_install_handlers(). Fixes:e923e8e79e
(ACPI / EC: Fix an issue that SCI_EVT cannot be detected after event is enabled) Fixes:4c237371f2
(ACPI / EC: Remove old CLEAR_ON_RESUME quirk) Fixes:9c40f956ce
(Revert "ACPI / EC: Enable event freeze mode..." to fix a regression) Link: https://bugzilla.kernel.org/show_bug.cgi?id=196833 Signed-off-by: Lv Zheng <lv.zheng@intel.com> Reported-by: Alistair Hamilton <ahpatent@gmail.com> Tested-by: Alistair Hamilton <ahpatent@gmail.com> Cc: 4.11+ <stable@vger.kernel.org> # 4.11+ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
39dae59d66
commit
53c5eaabae
@ -486,8 +486,11 @@ static inline void __acpi_ec_enable_event(struct acpi_ec *ec)
|
||||
{
|
||||
if (!test_and_set_bit(EC_FLAGS_QUERY_ENABLED, &ec->flags))
|
||||
ec_log_drv("event unblocked");
|
||||
if (!test_bit(EC_FLAGS_QUERY_PENDING, &ec->flags))
|
||||
advance_transaction(ec);
|
||||
/*
|
||||
* Unconditionally invoke this once after enabling the event
|
||||
* handling mechanism to detect the pending events.
|
||||
*/
|
||||
advance_transaction(ec);
|
||||
}
|
||||
|
||||
static inline void __acpi_ec_disable_event(struct acpi_ec *ec)
|
||||
@ -1456,11 +1459,10 @@ static int ec_install_handlers(struct acpi_ec *ec, bool handle_events)
|
||||
if (test_bit(EC_FLAGS_STARTED, &ec->flags) &&
|
||||
ec->reference_count >= 1)
|
||||
acpi_ec_enable_gpe(ec, true);
|
||||
|
||||
/* EC is fully operational, allow queries */
|
||||
acpi_ec_enable_event(ec);
|
||||
}
|
||||
}
|
||||
/* EC is fully operational, allow queries */
|
||||
acpi_ec_enable_event(ec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user