mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

  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®