From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755461AbcCBMeB (ORCPT ); Wed, 2 Mar 2016 07:34:01 -0500 Received: from mail-lf0-f68.google.com ([209.85.215.68]:34535 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752485AbcCBMd7 (ORCPT ); Wed, 2 Mar 2016 07:33:59 -0500 Date: Wed, 2 Mar 2016 13:35:04 +0100 From: =?utf-8?B?TWljaGHFgiBLxJlwaWXFhA==?= To: Darren Hart Cc: Pali =?utf-8?B?Um9ow6Fy?= , Matthew Garrett , Darek Stojaczyk , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 4/5] dell-wmi: properly process Dell Instant Launch hotkey Message-ID: <20160302123504.GB25223@eudyptula.hq.kempniu.pl> References: <1455634230-1487-1-git-send-email-kernel@kempniu.pl> <201602292139.16006@pali> <20160229204927.GB23568@eudyptula.hq.kempniu.pl> <201602292156.03876@pali> <20160229230015.GF7499@dvhart-mobl5.amr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160229230015.GF7499@dvhart-mobl5.amr.corp.intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Mon, Feb 29, 2016 at 09:56:03PM +0100, Pali Rohár wrote: > > On Monday 29 February 2016 21:49:27 you wrote: > > > > On Monday 29 February 2016 21:31:23 Michał Kępień wrote: > > > > > > > diff --git a/drivers/platform/x86/dell-wmi.c > > > > > > > b/drivers/platform/x86/dell-wmi.c index 65edd93..ffc957b5 > > > > > > > 100644 --- a/drivers/platform/x86/dell-wmi.c > > > > > > > +++ b/drivers/platform/x86/dell-wmi.c > > > > > > > @@ -111,7 +111,7 @@ static const struct key_entry > > > > > > > dell_wmi_legacy_keymap[] __initconst = { > > > > > > > > > > > > > > { KE_IGNORE, 0xe020, { KEY_MUTE } }, > > > > > > > > > > > > > > /* Shortcut and audio panel keys */ > > > > > > > > > > > > > > - { KE_IGNORE, 0xe025, { KEY_RESERVED } }, > > > > > > > + { KE_KEY, 0xe025, { KEY_PROG4 } }, > > > > > > > > > > > > > > { KE_IGNORE, 0xe026, { KEY_RESERVED } }, > > > > > > > > > > > > > > { KE_IGNORE, 0xe02e, { KEY_VOLUMEDOWN } }, > > > > > > > > > > > > > > @@ -235,6 +235,9 @@ static void dell_wmi_process_key(int > > > > > > > reported_key) > > > > > > > > > > > > > > acpi_video_handles_brightness_key_presses()) > > > > > > > > > > > > > > return; > > > > > > > > > > > > > > + if (key->keycode == KEY_PROG4 && > > > > > > > !wmi_requires_smbios_request) + return; > > > > > > > + > > > > > > > > > > > > Here I would rather test against reported_key, not keycode. If > > > > > > somebody in future adds KEY_PROG4 for something else we will > > > > > > have problem... > > > > > > > > > > As 0xe025 is currently the only event we know about that should > > > > > be ignored on some machines and processed on others, this makes > > > > > sense, > > > > > > > > > > at least for now. If I change the first condition to: > > > > > reported_key == 0xe025 > > > > > > > > There will be need also change for 5/5 patch... > > > > > > Why? Are you aware of any model which sends a 0xe029 WMI event _and_ > > > generates an i8042 interrupt? If not, WMI event 0xe029 should always > > > be turned into a key event, as per the keymap. > > > > No, but your current patch 4/5 and 5/5 do that (because it checks > > KEY_PROG4). But if it is not needed, I'm happy because of one hook less. > > From my reading, patch 5/5 adds 0xe029 to the reported keys that need to be > ignored, so the test would need to include both if it isn't using the common > keycode KEY_PROG4. I believe that is what Pali is saying as well. Is this not > the correct reading of 5/5? It's the other way round :) Perhaps explaining the issue once again will help. Until this patch series, dell-wmi was only "aware" of laptops which generate _both_ an i8042 interrupt and a WMI event when Dell Instant Launch is pressed. Thus, as the i8042 interrupt already caused a key event to be generated, there was no point in generating another one for the WMI event, hence the KE_IGNORE entry for 0xe025 in the keymap. Enter Vostro V131, which does _not_ generate an i8042 interrupt when Dell Instant Launch is pressed, yet still generates a WMI event. In other words, there was no way of generating a key event for Dell Instant Launch on that model without changing the relevant keymap entry into a KE_KEY one. However, I still needed to ensure that for most machines that WMI event would _not_ be turned into a key event. That's why patch 4/5 changes the keymap entry to a KE_KEY one, while also adding a conditional return to the key processing function, thus making sure that the previous behavior (ignoring WMI event 0xe025) is preserved on most machines. I used KEY_PROG4 in the conditional expression because a mapped keycode is also used in a comparison just above the code inserted by patch 4/5. For event 0xe029, however, the conditional expression added by patch 4/5 should always evaluate to false. Note that if we use KEY_PROG4 in the comparison, the second condition will be false; if we use 0xe025 in the comparison, the first condition will be false. The latter variant (suggested by Pali) will work fine until we hear of a model which generates _both_ WMI event 0xe029 and an i8042 interrupt upon pressing some hotkey. I was hoping the commit message for patch 4/5 would be clear enough to convey my intent, yet it seems I managed to confuse you. Maybe that's a sign that the commit message and/or code should be rephrased, but I can't be a judge on this one myself. Let me know what you think. Pali, if you think this is good enough as it is, please add your Reviewed-by. If you have doubts, I'm all ears. -- Best regards, Michał Kępień