Hi, On 2/7/21 5:34 PM, Alexander Kobel wrote: > Those events occur when a keyboard cover is attached to a ThinkPad > Tablet 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. Thank you for your patch. > No attempt is taken to emit an EV_SW event for SW_TABLET_MODE; this is > left to userspace. I don't understand this part, in order for userspace to respond to these events the thinkpad_acpi driver needs to emit events for this; and emitting SW_TABLET_MODE seems like it is the right thing to do. Why are you not doing this ? Note that it is important to only advertise SW_TABLET_MODE functionality on devices where it actually works. Which might be challenging I guess... But we have contacts inside Lenovo now, so perhaps they can help. Mark, Nitin, is there a way for the thinkpad_acpi code to figure out if 0x4012 / 0x4013 events will be send by a device? Also is there a way to get the current state of the keyboard-cover being attached at boot or not ? Regards, Hans > So this patch is mainly to avoid warnings about > unknown and unhandled events, which are now reported as: > > * Event 0x4012: attached keyboard cover > * Event 0x4013: detached keyboard cover > > Tested as working on a ThinkPad X1 Tablet Gen 2, 20JCS00C00, and as > non-interfering with a ThinkPad X1 Carbon 7th, 20QESABM02 (normal > clamshell, so it does not have a keyboard cover). > > Signed-off-by: Alexander Kobel <a-kobel@xxxxxxxxxx> > --- > drivers/platform/x86/thinkpad_acpi.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c > index c404706379d9..fd5322b5bbbd 100644 > --- a/drivers/platform/x86/thinkpad_acpi.c > +++ b/drivers/platform/x86/thinkpad_acpi.c > @@ -174,6 +174,8 @@ enum tpacpi_hkey_event_t { > or port replicator */ > TP_HKEY_EV_HOTPLUG_UNDOCK = 0x4011, /* undocked from hotplug > dock or port replicator */ > + TP_HKEY_EV_KBD_COVER_ATTACH = 0x4012, /* attached keyboard cover */ > + TP_HKEY_EV_KBD_COVER_DETACH = 0x4013, /* detached keyboard cover */ > > /* User-interface events */ > TP_HKEY_EV_LID_CLOSE = 0x5001, /* laptop lid closed */ > @@ -3989,6 +3991,12 @@ static bool hotkey_notify_dockevent(const u32 hkey, > case TP_HKEY_EV_HOTPLUG_UNDOCK: /* undocked from port replicator */ > pr_info("undocked from hotplug port replicator\n"); > return true; > + case TP_HKEY_EV_KBD_COVER_ATTACH: > + pr_info("attached keyboard cover\n"); > + return true; > + case TP_HKEY_EV_KBD_COVER_DETACH: > + pr_info("detached keyboard cover\n"); > + return true; > > default: > return false; > -- > 2.30.0 >