Commit 0a053f01 authored by Alexander Kobel's avatar Alexander Kobel Committed by Hans de Goede

platform/x86: thinkpad_acpi: Handle keyboard cover attach/detach events

Those events occur when a keyboard cover is attached to a ThinkPad
X1 Tablet series device.  Typically, they are used to switch from normal
to tablet mode in userspace; e.g., to offer touch keyboard choices when
focus goes to a text box and no keyboard is attached, or to enable
autorotation of the display according to the builtin orientation sensor.

intel-vtbn already recognizes those events.  To avoid sending duplicate
events to userspace, they are simply ignored.  Thus, this patch only
avoids warnings about unknown and unhandled HKEYs 0x4012 and 0x4013.

For more information about the background and potential improvements for
different types of attachment options, such as the Pico cartridge dock
module, see
https://lore.kernel.org/platform-driver-x86/38cb8265-1e30-d547-9e12-b4ae290be737@a-kobel.de/Signed-off-by: default avatarAlexander Kobel <a-kobel@a-kobel.de>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/83a0e45f-590d-0c7d-0afd-00a5a6322bd0@a-kobel.deSigned-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 03ee3183
......@@ -175,6 +175,12 @@ enum tpacpi_hkey_event_t {
or port replicator */
TP_HKEY_EV_HOTPLUG_UNDOCK = 0x4011, /* undocked from hotplug
dock or port replicator */
/*
* Thinkpad X1 Tablet series devices emit 0x4012 and 0x4013
* when keyboard cover is attached, detached or folded onto the back
*/
TP_HKEY_EV_KBD_COVER_ATTACH = 0x4012, /* keyboard cover attached */
TP_HKEY_EV_KBD_COVER_DETACH = 0x4013, /* keyboard cover detached or folded back */
/* User-interface events */
TP_HKEY_EV_LID_CLOSE = 0x5001, /* laptop lid closed */
......@@ -3991,6 +3997,23 @@ static bool hotkey_notify_dockevent(const u32 hkey,
pr_info("undocked from hotplug port replicator\n");
return true;
/*
* Deliberately ignore attaching and detaching the keybord cover to avoid
* duplicates from intel-vbtn, which already emits SW_TABLET_MODE events
* to userspace.
*
* Please refer to the following thread for more information and a preliminary
* implementation using the GTOP ("Get Tablet OPtions") interface that could be
* extended to other attachment options of the ThinkPad X1 Tablet series, such as
* the Pico cartridge dock module:
* https://lore.kernel.org/platform-driver-x86/38cb8265-1e30-d547-9e12-b4ae290be737@a-kobel.de/
*/
case TP_HKEY_EV_KBD_COVER_ATTACH:
case TP_HKEY_EV_KBD_COVER_DETACH:
*send_acpi_ev = false;
*ignore_acpi_ev = true;
return true;
default:
return false;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment