All of lore.kernel.org
 help / color / mirror / Atom feed
* Dell Vostro V131 hotkeys revisited
@ 2015-06-23 11:26 Michał Kępień
  2015-06-23 11:46 ` Pali Rohár
  2015-06-23 12:18 ` Pali Rohár
  0 siblings, 2 replies; 58+ messages in thread
From: Michał Kępień @ 2015-06-23 11:26 UTC (permalink / raw)
  To: Matthew Garrett, Rezwanul Kabir, Pali Rohár, Darren Hart
  Cc: platform-driver-x86

Hi all,

I'm trying to get all of the Dell Vostro V131 special hotkeys working.
This issue has been previously raised [1] by Peter Meiser, but it wasn't
solved. I decided to share my findings on this subject, hoping that
someone will have an idea how to proceed.

TL;DR: it looks like pressing these hotkeys should be reported by the
firmware using WMI, but the DSDT doesn't contain a code path which
notifies the ACPI WMI object upon a hotkey event.

Vostro V131 has 3 special hotkeys. Hotkey #1 is simply translated to
Super+X, so it's not an issue. Hotkey #2 generates keycode 0xEE (it also
raises a GPE - see below) and can reportedly be coerced to behave [2],
which leaves us with hotkey #3. While the Dell event GUID is present in
the ACPI WMI object, the dell-wmi driver does not report any events when
hotkey #3 is pressed - only the ACPI interrupt counter increases as GPE
0x17 is raised. Diving into the DSDT [3], you'll find that the _L17
method only calls another method (NEVT), where some value is retrieved
(using yet another method, ECG1) and acted upon accordingly. Using ACPI
method customization, I discovered that ECG1 returns 0x2000 for hotkey
#2 and 0x1000 for hotkey #3. But if you look at the code of the NEVT
method, it turns out these values don't cause any code path to be
executed (while I would expect them to cause the WMIA method to be
called as it notifies the ACPI WMI object).

I decompiled the MOF buffer (WQMO) using wmimofck.exe, but no magic
initialization method popped up. While in Windows, I copied a sample
VBScript from MSDN for receiving event notifications via WMI, set proper
namespace ("root\wmi") and notification query ("SELECT * FROM
BIOSEvent") and it worked. This is why I believe the WMI route is the
correct one.

However, even when I customized the NEVT method to call WMIA for values
0x1000 and 0x2000, the dell-wmi driver reported all zeros for the event
data retrieved using _WED.

Using acpi_os_name didn't change anything. Neither did updating the BIOS
to the latest version, A04.

So I wrote a kernel module which installs a custom GPE 0x17 handler,
which in turn calls the ECG1 method to retrieve the event code and
generates input events. While this works, GPE 0x17 is also used for
power and lid events (among others), so loading the module cripples
other ACPI-based features, rendering it useless.

If anyone has an idea where to go from here to solve this issue in an
elegant manner, I'm all ears.

[1] http://www.spinics.net/lists/platform-driver-x86/msg03232.html
[2] http://www.spinics.net/lists/platform-driver-x86/msg04555.html
[3] https://launchpadlibrarian.net/146038073/DSDT.dsl

-- 
Best regards,
Michał Kępień

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2015-12-19 12:31 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-23 11:26 Dell Vostro V131 hotkeys revisited Michał Kępień
2015-06-23 11:46 ` Pali Rohár
2015-06-23 19:40   ` Michał Kępień
2015-06-23 19:47     ` Pali Rohár
2015-06-24 11:18       ` Michał Kępień
2015-06-24 13:23         ` Pali Rohár
2015-06-25  9:02           ` Michał Kępień
2015-06-27 18:50             ` Pali Rohár
2015-06-30  7:38               ` Michał Kępień
2015-06-30  8:00                 ` Pali Rohár
2015-07-01  8:32                   ` Michał Kępień
2015-07-01  8:40                     ` Pali Rohár
2015-07-01 10:11                       ` Michał Kępień
2015-07-01 10:55                         ` Pali Rohár
2015-07-02 20:41                           ` Michał Kępień
2015-07-02 20:58                             ` Pali Rohár
2015-07-03  6:52                               ` Michał Kępień
2015-07-03  7:48                                 ` Pali Rohár
2015-07-03 11:26                                   ` Michał Kępień
2015-07-03 11:43                                     ` Pali Rohár
2015-07-03 13:23                                       ` Michał Kępień
2015-07-03 13:32                                         ` Pali Rohár
2015-07-03 13:50                                           ` Michał Kępień
2015-07-03 14:09                                             ` Pali Rohár
2015-07-03 14:14                                               ` Pali Rohár
2015-07-03 18:22                                                 ` Gabriele Mazzotta
2015-07-03 20:07                                                   ` Michał Kępień
2015-07-03 20:30                                                     ` Gabriele Mazzotta
2015-07-04 19:41                                                   ` Pali Rohár
2015-07-04 20:34                                                     ` Gabriele Mazzotta
2015-07-03 20:55                                               ` Michał Kępień
2015-07-04 19:13                                               ` Pali Rohár
2015-07-04 19:47                                                 ` Pali Rohár
2015-07-27 19:27                                               ` Michał Kępień
2015-07-07 18:36                                   ` Mario Limonciello
2015-07-07 21:01                                     ` Pali Rohár
2015-07-08  3:21                                       ` Michał Kępień
2015-07-08  3:53                                     ` Michał Kępień
2015-07-22  7:35                                       ` Michał Kępień
2015-08-31  9:51                                         ` Michał Kępień
2015-09-10  4:38                                           ` Darren Hart
2015-11-13 10:17                                             ` Michał Kępień
2015-12-07 11:43                                               ` Pali Rohár
2015-12-16  9:05                                                 ` Michał Kępień
2015-12-16  9:30                                                   ` Pali Rohár
2015-12-16 10:29                                                     ` Hans de Goede
2015-12-17  8:05                                                       ` Michał Kępień
2015-12-17  9:48                                                         ` Hans de Goede
2015-12-17 18:47                                                           ` Pali Rohár
2015-12-17 18:54                                                             ` Hans de Goede
2015-12-19  0:02                                                               ` Darren Hart
2015-12-19  9:59                                                                 ` Pali Rohár
2015-12-18  7:10                                                           ` Michał Kępień
2015-12-18 10:44                                                             ` Hans de Goede
2015-12-19 12:31                                                               ` Michał Kępień
2015-07-04 21:24                                 ` Pali Rohár
2015-07-05  4:51                                   ` Michał Kępień
2015-06-23 12:18 ` Pali Rohár

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.