[ltp] Unsupported hkey event

Xavier Naveira linux-thinkpad@linux-thinkpad.org
Mon, 2 Feb 2015 09:47:36 +0100


Hi,

I found the following message in the kernel log:

Jan 29 07:21:35 xntlaptop kernel: [ 4928.933775] thinkpad_acpi:
unknown possible thermal alarm or keyboard event received
Jan 29 07:21:35 xntlaptop kernel: [ 4928.933785] thinkpad_acpi:
unhandled HKEY event 0x6060
Jan 29 07:21:35 xntlaptop kernel: [ 4928.933789] thinkpad_acpi: please
report the conditions when this event happened to
ibm-acpi-devel@lists.sourceforge.net

and since my interest on how kernel driver development works have been
increasing lately I decided to send a message to the list. After some
code reading I sent in the following patch to the list:

Pressing Fn+Esc in a Lenovo Thinkpad x240 to lock the Fn keys generates
an unhandled hkey event

Signed-off-by: Xavier Naveira <xnaveira@gmail.com>
---
 drivers/platform/x86/thinkpad_acpi.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/platform/x86/thinkpad_acpi.c
b/drivers/platform/x86/thinkpad_acpi.c
index c3d11fa..e61c43b 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -196,6 +196,7 @@ enum tpacpi_hkey_event_t {
        /* Key-related user-interface events */
        TP_HKEY_EV_KEY_NUMLOCK          = 0x6000, /* NumLock key pressed */
        TP_HKEY_EV_KEY_FN               = 0x6005, /* Fn key pressed? E420 */
+       TP_HKEY_EV_KEY_FN_ESC           = 0x6060, /* Fn+Esc key pressed X240 */

        /* Thermal events */
        TP_HKEY_EV_ALARM_BAT_HOT        = 0x6011, /* battery too hot */
@@ -3717,6 +3718,12 @@ static bool hotkey_notify_6xxx(const u32 hkey,
                *send_acpi_ev = false;
                *ignore_acpi_ev = true;
                return true;
+       case TP_HKEY_EV_KEY_FN_ESC:
+               /* key press events, we just ignore them as long as the EC
+                * is still reporting them in the normal keyboard stream */
+               *send_acpi_ev = false;
+               *ignore_acpi_ev = true;
+               return true;

        default:
                pr_warn("unknown possible thermal alarm or keyboard
event received\n");


Since then I've been reading and investigating since the RF_KILL
button only works for wlan and not for wwan or bluetooth in my x240
and then I stumbled upon this list so I figured that I'd send an email
here asking for:

 - Opinions on the patch (not that it does anything else than remove
the warning from the log), I sent it to the individuals/lists that I
got from getmaintainers script.
 - Opinions on how should I proceed regarding the RF_KILL problem. I
followed the code trying to understand what happens upon RF_KILL key
pressing and I ended up (not surprisingly) at the input_handle_event
function in the input.c but I don't really get where exactly is
decided what to kill and how.

Thank you.