mirror of
https://github.com/torvalds/linux.git
synced 2025-11-04 18:49:34 +02:00
platform/x86: intel-vbtn: match power button on press rather than release
This fixes a problem where the system gets stuck in a loop
unable to wakeup via power button in s2idle.
The problem happens because:
- press power button:
- system emits 0xc0 (power press), event ignored
- system emits 0xc1 (power release), event processed,
emited as KEY_POWER
- set wakeup_mode to true
- system goes to s2idle
- press power button
- system emits 0xc0 (power press), wakeup_mode is true,
system wakes
- system emits 0xc1 (power release), event processed,
emited as KEY_POWER
- system goes to s2idle again
To avoid this situation, process the presses (which matches what
intel-hid does too).
Verified on an Dell XPS 9365
Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
This commit is contained in:
parent
baa5480b05
commit
c801603e6d
1 changed files with 2 additions and 2 deletions
|
|
@ -36,8 +36,8 @@ static const struct acpi_device_id intel_vbtn_ids[] = {
|
|||
|
||||
/* In theory, these are HID usages. */
|
||||
static const struct key_entry intel_vbtn_keymap[] = {
|
||||
{ KE_IGNORE, 0xC0, { KEY_POWER } }, /* power key press */
|
||||
{ KE_KEY, 0xC1, { KEY_POWER } }, /* power key release */
|
||||
{ KE_KEY, 0xC0, { KEY_POWER } }, /* power key press */
|
||||
{ KE_IGNORE, 0xC1, { KEY_POWER } }, /* power key release */
|
||||
{ KE_KEY, 0xC4, { KEY_VOLUMEUP } }, /* volume-up key press */
|
||||
{ KE_IGNORE, 0xC5, { KEY_VOLUMEUP } }, /* volume-up key release */
|
||||
{ KE_KEY, 0xC6, { KEY_VOLUMEDOWN } }, /* volume-down key press */
|
||||
|
|
|
|||
Loading…
Reference in a new issue