diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2019-06-22 12:07:35 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2019-06-22 12:07:35 +0200 |
commit | 6808acb57a286cda48d8674713e672681ca7ffb3 (patch) | |
tree | 77ca408d2453069f6caec40053c4a20e60594c32 /drivers/platform/x86/intel-vbtn.c | |
parent | d21e43f2ef32ba3242687dbedb3c4b9a76b3eebc (diff) | |
parent | 9e0babf2c06c73cda2c0cd37a1653d823adb40ec (diff) | |
download | linux-6808acb57a286cda48d8674713e672681ca7ffb3.tar.bz2 |
Merge branch 'linus' into timers/core
Pick up upstream fixes for pending changes.
Diffstat (limited to 'drivers/platform/x86/intel-vbtn.c')
-rw-r--r-- | drivers/platform/x86/intel-vbtn.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c index 06cd7e818ed5..a0d0cecff55f 100644 --- a/drivers/platform/x86/intel-vbtn.c +++ b/drivers/platform/x86/intel-vbtn.c @@ -76,12 +76,24 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) struct platform_device *device = context; struct intel_vbtn_priv *priv = dev_get_drvdata(&device->dev); unsigned int val = !(event & 1); /* Even=press, Odd=release */ - const struct key_entry *ke_rel; + const struct key_entry *ke, *ke_rel; bool autorelease; if (priv->wakeup_mode) { - if (sparse_keymap_entry_from_scancode(priv->input_dev, event)) { + ke = sparse_keymap_entry_from_scancode(priv->input_dev, event); + if (ke) { pm_wakeup_hard_event(&device->dev); + + /* + * Switch events like tablet mode will wake the device + * and report the new switch position to the input + * subsystem. + */ + if (ke->type == KE_SW) + sparse_keymap_report_event(priv->input_dev, + event, + val, + 0); return; } goto out_unknown; |