RE: [External] Re: [PATCH] platform/x86: thinkpad_acpi: handle HKEY 0x4012, 0x4013 events

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Hans,

>-----Original Message-----
>From: Hans de Goede <hdegoede@xxxxxxxxxx>
>Sent: Monday, February 8, 2021 2:10 AM
>To: Alexander Kobel <a-kobel@xxxxxxxxxx>; platform-driver-
>x86@xxxxxxxxxxxxxxx; Mark Pearson <mpearson@xxxxxxxxxx>; Nitin Joshi1
><njoshi1@xxxxxxxxxx>
>Subject: [External] Re: [PATCH] platform/x86: thinkpad_acpi: handle HKEY
>0x4012, 0x4013 events
>
>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?

It seems , these events are used for not only keyboard cover, but also other tablet options.
In attached document, Interface type 4 (Graft type) is of ThinkPad X1 Tablet Series.

>
>Also is there a way to get the current state of the keyboard-cover being
>attached at boot or not ?
It seems "GTOP" ASL method can be used to get current state.

>
>Regards,
>
>Hans

Thanks & Regards,
Nitin Joshi 
>
>
>
>> 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
>>

Attachment: GTOP.pdf
Description: GTOP.pdf


[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux