Skip to content

Commit

Permalink
platform/x86/intel/hid: Don't wake on 5-button releases
Browse files Browse the repository at this point in the history
[ Upstream commit 5864e47 ]

If, for example, the power button is configured to suspend, holding it
and releasing it after the machine has suspended, will wake the machine.

Also on some machines, power button release events are sent during
hibernation, even if the button wasn't used to hibernate the machine.
This causes hibernation to be aborted.

Fixes: 0c4cae1 ("PM: hibernate: Avoid missing wakeup events during hibernation")
Signed-off-by: David McFarland <corngood@gmail.com>
Tested-by: Enrik Berkhan <Enrik.Berkhan@inka.de>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/878r1tpd6u.fsf_-_@gmail.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
corngood authored and gregkh committed Apr 13, 2024
1 parent 6be74b1 commit 3fe68ad
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/platform/x86/intel/hid.c
Expand Up @@ -504,6 +504,7 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
struct platform_device *device = context;
struct intel_hid_priv *priv = dev_get_drvdata(&device->dev);
unsigned long long ev_index;
struct key_entry *ke;
int err;

/*
Expand Down Expand Up @@ -545,11 +546,15 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
if (event == 0xc0 || !priv->array)
return;

if (!sparse_keymap_entry_from_scancode(priv->array, event)) {
ke = sparse_keymap_entry_from_scancode(priv->array, event);
if (!ke) {
dev_info(&device->dev, "unknown event 0x%x\n", event);
return;
}

if (ke->type == KE_IGNORE)
return;

wakeup:
pm_wakeup_hard_event(&device->dev);

Expand Down

0 comments on commit 3fe68ad

Please sign in to comment.