From: Darren Hart <dvhart@infradead.org>
To: "Pali Rohár" <pali.rohar@gmail.com>
Cc: "Matthew Garrett" <mjg59@srcf.ucam.org>,
"Gabriele Mazzotta" <gabriele.mzt@gmail.com>,
"Michał Kępień" <kernel@kempniu.pl>,
"Mario Limonciello" <mario_limonciello@dell.com>,
"Andy Lutomirski" <luto@kernel.org>,
"Alex Hung" <alex.hung@canonical.com>,
platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/4] dell-wmi: Rework code for generating sparse keymap and processing WMI events
Date: Wed, 8 Jun 2016 15:50:32 -0700 [thread overview]
Message-ID: <20160608225032.GL28348@f23x64.localdomain> (raw)
In-Reply-To: <1465342347-20635-5-git-send-email-pali.rohar@gmail.com>
On Wed, Jun 08, 2016 at 01:32:27AM +0200, Pali Rohár wrote:
> This patch unify procedure for generating sparse keymap and unify also big
> switch code for processing WMI events of different types. After this patch
> dell-wmi driver does not differ between "old" and "new" hotkey type.
>
> It construct sparse keymap table with all WMI codes. It is because on some
> laptops (e.g. Dell Latitude E6440) ACPI/firmware send both event types (old
> and new).
>
> Each WMI code in sparse keymap table is prefixed by 16bit event type, so it
> does not change functionality on laptops with "old" hotkey support (those
> without scancodes in DMI).
>
> This allow us to distinguish between same WMI codes with different types in
> sparse keymap. Thanks to this WMI events of type 0x0011 were moved from big
> switch into sparse keymap table too.
>
> This patch also fixes possible bug in parsing WMI event buffer introduced
> in commit 5ea2559726b7 ("dell-wmi: Add support for new Dell systems"). That
> commit changed buffer type from int* to u16* without fixing code. More at:
> http://lkml.iu.edu/hypermail/linux/kernel/1507.0/01950.html
>
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Michał Kępień <kernel@kempniu.pl>
> ---
> drivers/platform/x86/dell-wmi.c | 215 +++++++++++++++++++--------------------
> 1 file changed, 107 insertions(+), 108 deletions(-)
>
> diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
> index a406f01..fe831f3 100644
> --- a/drivers/platform/x86/dell-wmi.c
> +++ b/drivers/platform/x86/dell-wmi.c
...
> @@ -379,59 +385,21 @@ static void dell_wmi_notify(u32 value, void *context)
> pr_debug("Process buffer (%*ph)\n", len*2, buffer_entry);
>
> switch (buffer_entry[1]) {
...
> - case 0x10:
> - /* Keys pressed */
> + case 0x0010:
> + /* Sequence of keys pressed */
> for (i = 2; i < len; ++i)
> - dell_wmi_process_key(buffer_entry[i]);
> + dell_wmi_process_key(0x0010, buffer_entry[i]);
> break;
> - case 0x11:
> - for (i = 2; i < len; ++i) {
> - switch (buffer_entry[i]) {
> - case 0xfff0:
> - /* Battery unplugged */
> - pr_debug("Battery unplugged\n");
> - break;
> - case 0xfff1:
> - /* Battery inserted */
> - pr_debug("Battery inserted\n");
> - break;
> - case 0x01e1:
> - case 0x02ea:
> - case 0x02eb:
> - case 0x02ec:
> - case 0x02f6:
> - /* Keyboard backlight level changed */
> - pr_debug("Keyboard backlight level "
> - "changed\n");
> - break;
> - default:
> - /* Unknown event */
> - pr_info("Unknown WMI event type 0x11: "
> - "0x%x\n", (int)buffer_entry[i]);
> - break;
> - }
> - }
> + case 0x0011:
> + /* Sequence of events occurred */
> + for (i = 2; i < len; ++i)
> + dell_wmi_process_key(0x0011, buffer_entry[i]);
Since this is identical to case 0x010, let's avoid the duplication of code and
handle this with a fall-through, like:
case 0x0010:
case 0x0011:
/* Sequence of events occurred */
for (i = 2; i < len; ++i)
dell_wmi_process_key(buffer_entry[1], buffer_entry[i]);
Checkpatch caught a couple comments over 80 characters as well, please correct
along with the above change request.
Otherwise, this looks like a good improvement to me. I'll likely reword some of
the commentary for concision and clarity before I merge it.
Thanks!
--
Darren Hart
Intel Open Source Technology Center
next prev parent reply other threads:[~2016-06-08 22:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-07 23:32 [PATCH v2 0/4] dell-wmi: Changes in WMI event code handling Pali Rohár
2016-06-07 23:32 ` [PATCH v2 1/4] dell-wmi: Ignore WMI event code 0xe045 Pali Rohár
2016-06-07 23:32 ` [PATCH v2 2/4] dell-wmi: Sort WMI event codes and update comments Pali Rohár
2016-06-07 23:32 ` [PATCH v2 3/4] dell-wmi: Add information about other WMI event codes Pali Rohár
2016-06-07 23:32 ` [PATCH v2 4/4] dell-wmi: Rework code for generating sparse keymap and processing WMI events Pali Rohár
2016-06-08 22:50 ` Darren Hart [this message]
2016-06-09 11:27 ` Michał Kępień
2016-06-09 11:33 ` Pali Rohár
2016-06-09 19:59 ` Darren Hart
2016-06-09 11:57 ` [PATCH v2 0/4] dell-wmi: Changes in WMI event code handling Michał Kępień
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160608225032.GL28348@f23x64.localdomain \
--to=dvhart@infradead.org \
--cc=alex.hung@canonical.com \
--cc=gabriele.mzt@gmail.com \
--cc=kernel@kempniu.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mario_limonciello@dell.com \
--cc=mjg59@srcf.ucam.org \
--cc=pali.rohar@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®