public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake
       [not found]   ` <20151114092704.GA25957@pali>
@ 2015-11-14 15:48     ` Andy Lutomirski
  2015-11-14 16:13       ` Pali Rohár
  0 siblings, 1 reply; 5+ messages in thread
From: Andy Lutomirski @ 2015-11-14 15:48 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Matthew Garrett, platform-driver-x86,
	linux-kernel@vger.kernel.org

On Nov 14, 2015 1:27 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
>
> On Friday 13 November 2015 21:49:30 Andy Lutomirski wrote:
> > The XPS 13 Skylake has an rfkill button and a switchvideomode button
> > that aren't enumerated in the DMI table AFAICT.  Add a table listing
> > extra un-enumerated hotkeys.  To avoid breaking things that worked
> > before, these un-enumerated hotkeys won't be used if the DMI table
> > maps them to something else.
> >
>
> Do you have any (Dell) documentation which specify list of these wmi
> codes send to dell-wmi driver?
>

No.  Do you know where to get that documentation?

> > This also adds the Fn-lock key as a KE_IGNORE entry.
> >
> > Signed-off-by: Andy Lutomirski <luto@kernel.org>
> > ---
> >  drivers/platform/x86/dell-wmi.c | 48 +++++++++++++++++++++++++++++++++++------
> >  1 file changed, 41 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
> > index f2d77fe696ac..5be1abec4f64 100644
> > --- a/drivers/platform/x86/dell-wmi.c
> > +++ b/drivers/platform/x86/dell-wmi.c
> > @@ -142,6 +142,16 @@ static const u16 bios_to_linux_keycode[256] __initconst = {
> >       0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PROG3
> >  };
> >
> > +/* These are applied if the hk table is present and doesn't override them. */
> > +static const struct key_entry dell_wmi_extra_keymap[] __initconst = {
> > +     /* Fn-lock -- no action is required by the kernel. */
> > +     { KE_IGNORE, 0x151, { KEY_RESERVED } },
> > +
> > +     /* Keys that need our help (on XPS 13 Skylake and maybe others. */
> > +     { KE_KEY, 0x152, { KEY_SWITCHVIDEOMODE } },
> > +     { KE_KEY, 0x153, { KEY_RFKILL } },
>
> On more Dell laptops rfkill events are handed by ACPI driver
> dell-rbtn.ko. Are you sure that dell-rbtn.ko does not send keypress
> event and you really need it from dell-wmi? We already masked KEY_RFKILL
> in dell-wmi to prevent double events...
>

Hmm, interesting.  I have DELLABC6, not DELLABCE.  I'll play around
with it a bit.  Are there Dell docs for this?

Regardless, we'll need something like this, but maybe with KE_IGNORE,
just to silence the warnings.

> > +
> > +             /*
> > +              * Check if we've already found this scancode.  This takes
> > +              * quadratic time, but it doesn't matter unless the list
> > +              * of extra keys gets very long.
> > +              */
> > +             for (j = 0; j < num_bios_keys; j++)
> > +                     if (keymap[j].code == dell_wmi_extra_keymap[i].code)
> > +                             goto skip;
>
> Rather move this code into separate boolean function and for return
> value here. This will prevent using hacky goto...
>

I'll do that in v2.

--Andy

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

* Re: [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake
  2015-11-14 15:48     ` [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake Andy Lutomirski
@ 2015-11-14 16:13       ` Pali Rohár
       [not found]         ` <CALCETrWss=zCWhNkR2S_oi_m3W1xNO+UL_-uOnOVeLh5WHsDgQ@mail.gmail.com>
  0 siblings, 1 reply; 5+ messages in thread
From: Pali Rohár @ 2015-11-14 16:13 UTC (permalink / raw)
  To: Andy Lutomirski
  Cc: Matthew Garrett, platform-driver-x86,
	linux-kernel@vger.kernel.org

[-- Attachment #1: Type: Text/Plain, Size: 3850 bytes --]

On Saturday 14 November 2015 16:48:25 Andy Lutomirski wrote:
> On Nov 14, 2015 1:27 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
> > On Friday 13 November 2015 21:49:30 Andy Lutomirski wrote:
> > > The XPS 13 Skylake has an rfkill button and a switchvideomode
> > > button that aren't enumerated in the DMI table AFAICT.  Add a
> > > table listing extra un-enumerated hotkeys.  To avoid breaking
> > > things that worked before, these un-enumerated hotkeys won't be
> > > used if the DMI table maps them to something else.
> > 
> > Do you have any (Dell) documentation which specify list of these
> > wmi codes send to dell-wmi driver?
> 
> No.  Do you know where to get that documentation?
> 

Time to time Dell release some documentation or example code. You could 
ask Dell people on LKML (e.g. Mario Limonciello is active) or on smbios 
mailing list libsmbios-devel@lists.us.dell.com.

But currently there there are open questions about WMI hotkeys on Dell 
Vostro V131 which we cannot fix yet :-(

> > > This also adds the Fn-lock key as a KE_IGNORE entry.
> > > 
> > > Signed-off-by: Andy Lutomirski <luto@kernel.org>
> > > ---
> > > 
> > >  drivers/platform/x86/dell-wmi.c | 48
> > >  +++++++++++++++++++++++++++++++++++------ 1 file changed, 41
> > >  insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/drivers/platform/x86/dell-wmi.c
> > > b/drivers/platform/x86/dell-wmi.c index
> > > f2d77fe696ac..5be1abec4f64 100644
> > > --- a/drivers/platform/x86/dell-wmi.c
> > > +++ b/drivers/platform/x86/dell-wmi.c
> > > @@ -142,6 +142,16 @@ static const u16 bios_to_linux_keycode[256]
> > > __initconst = {
> > > 
> > >       0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_PROG3
> > >  
> > >  };
> > > 
> > > +/* These are applied if the hk table is present and doesn't
> > > override them. */ +static const struct key_entry
> > > dell_wmi_extra_keymap[] __initconst = { +     /* Fn-lock -- no
> > > action is required by the kernel. */ +     { KE_IGNORE, 0x151, {
> > > KEY_RESERVED } },
> > > +
> > > +     /* Keys that need our help (on XPS 13 Skylake and maybe
> > > others. */ +     { KE_KEY, 0x152, { KEY_SWITCHVIDEOMODE } },
> > > +     { KE_KEY, 0x153, { KEY_RFKILL } },
> > 
> > On more Dell laptops rfkill events are handed by ACPI driver
> > dell-rbtn.ko. Are you sure that dell-rbtn.ko does not send keypress
> > event and you really need it from dell-wmi? We already masked
> > KEY_RFKILL in dell-wmi to prevent double events...
> 
> Hmm, interesting.  I have DELLABC6, not DELLABCE.  I'll play around
> with it a bit.  Are there Dell docs for this?
> 

Decompiling ACPI table is documentation :-) Probably DELLABC6 will have 
similar (or maybe same) ACPI interface. Post relevant ACPI ASL code, 
maybe I could help with it.

Anyway first version of DELLABCE driver was written by Alex Hung (from 
Canonical), so it is possible that also non-Dell could help with 
documentation/behaviour as well.

> Regardless, we'll need something like this, but maybe with KE_IGNORE,
> just to silence the warnings.
> 

Yes, with KE_IGNORE we will have documented behaviour in code.

> > > +
> > > +             /*
> > > +              * Check if we've already found this scancode. 
> > > This takes +              * quadratic time, but it doesn't
> > > matter unless the list +              * of extra keys gets very
> > > long.
> > > +              */
> > > +             for (j = 0; j < num_bios_keys; j++)
> > > +                     if (keymap[j].code ==
> > > dell_wmi_extra_keymap[i].code) +                            
> > > goto skip;
> > 
> > Rather move this code into separate boolean function and for return
> > value here. This will prevent using hacky goto...
> 
> I'll do that in v2.
> 
> --Andy

OK.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake
       [not found]         ` <CALCETrWss=zCWhNkR2S_oi_m3W1xNO+UL_-uOnOVeLh5WHsDgQ@mail.gmail.com>
@ 2015-11-17  8:36           ` Pali Rohár
  2015-11-17 19:03             ` Andy Lutomirski
  0 siblings, 1 reply; 5+ messages in thread
From: Pali Rohár @ 2015-11-17  8:36 UTC (permalink / raw)
  To: Andy Lutomirski
  Cc: Alex Hung, Mario Limonciello, Matthew Garrett,
	platform-driver-x86, linux-kernel@vger.kernel.org,
	libsmbios-devel

[-- Attachment #1: Type: Text/Plain, Size: 3490 bytes --]

On Saturday 14 November 2015 18:07:57 Andy Lutomirski wrote:
> [lots of people added]
> 
> On Sat, Nov 14, 2015 at 8:13 AM, Pali Rohár <pali.rohar@gmail.com>
> wrote:
> > On Saturday 14 November 2015 16:48:25 Andy Lutomirski wrote:
> >> On Nov 14, 2015 1:27 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
> >> > On Friday 13 November 2015 21:49:30 Andy Lutomirski wrote:
> >> > > The XPS 13 Skylake has an rfkill button and a switchvideomode
> >> > > button that aren't enumerated in the DMI table AFAICT.  Add a
> >> > > table listing extra un-enumerated hotkeys.  To avoid breaking
> >> > > things that worked before, these un-enumerated hotkeys won't
> >> > > be used if the DMI table maps them to something else.
> >> > 
> >> > Do you have any (Dell) documentation which specify list of these
> >> > wmi codes send to dell-wmi driver?
> >> 
> >> No.  Do you know where to get that documentation?
> > 
> > Time to time Dell release some documentation or example code. You
> > could ask Dell people on LKML (e.g. Mario Limonciello is active)
> > or on smbios mailing list libsmbios-devel@lists.us.dell.com.
> > 
> > But currently there there are open questions about WMI hotkeys on
> > Dell Vostro V131 which we cannot fix yet :-(
> 
> On the Dell XPS 13 Skylake (XPS 13 9350), upstream Linux doesn't
> support the rfkill button.
> 
> There seem to be three WMI events that aren't reflected in the OEM
> type 178 DMI table:
> 
> 0x151: Fn-lock (no action needed by OS)
> 0x152: Switch video mode (should send KEY_SWITCHVIDEOMODE, but
> currently just warns)
> 0x153: rfkill -- currently warns, and see below.
> 
> On several Dell models, there's the dell_rbtn (DELRBTN / DELLABCE)
> device.  It's here in the DSDT, too, but it seems to be disabled if
> _OSI reports "Windows 2012" or "Windows 2013", so _STA returns zero.
> (It also shows up as DELLRBC6, but I haven't tried all the _OSI
> hackery that seems to be needed in order to test the driver.)
> 

Hi!

In your ASL code is:

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((OIDE () < One))
                {
                    Return (0x0F)
                }

                Return (Zero)
            }

OIDE() returns 1 for Windows 8.

This is quite interesting, on my Latitude E6440 is this ASL code:

            Method (_STA, 0, NotSerialized)
            {
                If (LLess (OIDE (), One))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

And again OIDE() returns 1 for Windows 8. So behaviour is negated.

Can you check if you have latest version of BIOS? Maybe Dell written 
that condition incorrectly?

Can you try to add "DELLRBC6" into dell-rbtn.c acpi table and boot 
kernel with acpi_osi="!Windows 2012" acpi_osi="!Windows 2013" what 
happens?

> My proposal is to modify dell_wmi to handle 0x151 (ignore), 0x152
> (send KEY_SWITCHVIDEOMODE), and 0x153 (send KEY_RFKILL), but only if
> there isn't something else mapped to them in the DMI table.
> 
> I've attached dmidecode output and the DSDT.
> 

Can you please provide debug output from dell-wmi module when you press 
those hotkeys? Specially I want to see wmi buffer for each pressed 
hotkey. In debug dmesg it starts with "Received WMI event" and "Process 
buffer". Look into dell-wmi.c source code.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake
  2015-11-17  8:36           ` Pali Rohár
@ 2015-11-17 19:03             ` Andy Lutomirski
  2015-11-18  3:44               ` Andy Lutomirski
  0 siblings, 1 reply; 5+ messages in thread
From: Andy Lutomirski @ 2015-11-17 19:03 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Alex Hung, Mario Limonciello, Matthew Garrett,
	platform-driver-x86, linux-kernel@vger.kernel.org,
	libsmbios-devel

On Nov 17, 2015 12:36 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
>
> On Saturday 14 November 2015 18:07:57 Andy Lutomirski wrote:
> > [lots of people added]
> >
> > On Sat, Nov 14, 2015 at 8:13 AM, Pali Rohár <pali.rohar@gmail.com>
> > wrote:
> > > On Saturday 14 November 2015 16:48:25 Andy Lutomirski wrote:
> > >> On Nov 14, 2015 1:27 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
> > >> > On Friday 13 November 2015 21:49:30 Andy Lutomirski wrote:
> > >> > > The XPS 13 Skylake has an rfkill button and a switchvideomode
> > >> > > button that aren't enumerated in the DMI table AFAICT.  Add a
> > >> > > table listing extra un-enumerated hotkeys.  To avoid breaking
> > >> > > things that worked before, these un-enumerated hotkeys won't
> > >> > > be used if the DMI table maps them to something else.
> > >> >
> > >> > Do you have any (Dell) documentation which specify list of these
> > >> > wmi codes send to dell-wmi driver?
> > >>
> > >> No.  Do you know where to get that documentation?
> > >
> > > Time to time Dell release some documentation or example code. You
> > > could ask Dell people on LKML (e.g. Mario Limonciello is active)
> > > or on smbios mailing list libsmbios-devel@lists.us.dell.com.
> > >
> > > But currently there there are open questions about WMI hotkeys on
> > > Dell Vostro V131 which we cannot fix yet :-(
> >
> > On the Dell XPS 13 Skylake (XPS 13 9350), upstream Linux doesn't
> > support the rfkill button.
> >
> > There seem to be three WMI events that aren't reflected in the OEM
> > type 178 DMI table:
> >
> > 0x151: Fn-lock (no action needed by OS)
> > 0x152: Switch video mode (should send KEY_SWITCHVIDEOMODE, but
> > currently just warns)
> > 0x153: rfkill -- currently warns, and see below.
> >
> > On several Dell models, there's the dell_rbtn (DELRBTN / DELLABCE)
> > device.  It's here in the DSDT, too, but it seems to be disabled if
> > _OSI reports "Windows 2012" or "Windows 2013", so _STA returns zero.
> > (It also shows up as DELLRBC6, but I haven't tried all the _OSI
> > hackery that seems to be needed in order to test the driver.)
> >
>
> Hi!
>
> In your ASL code is:
>
>             Method (_STA, 0, NotSerialized)  // _STA: Status
>             {
>                 If ((OIDE () < One))
>                 {
>                     Return (0x0F)
>                 }
>
>                 Return (Zero)
>             }
>
> OIDE() returns 1 for Windows 8.
>
> This is quite interesting, on my Latitude E6440 is this ASL code:
>
>             Method (_STA, 0, NotSerialized)
>             {
>                 If (LLess (OIDE (), One))
>                 {
>                     Return (Zero)
>                 }
>
>                 Return (0x0F)
>             }
>
> And again OIDE() returns 1 for Windows 8. So behaviour is negated.
>
> Can you check if you have latest version of BIOS? Maybe Dell written
> that condition incorrectly?
>

I'll check later on.  There's one newer version.

> Can you try to add "DELLRBC6" into dell-rbtn.c acpi table and boot
> kernel with acpi_osi="!Windows 2012" acpi_osi="!Windows 2013" what
> happens?
>

I did exactly that.  The dell_rbtn driver partially worked, but, when
I pushed the rfkill button to turn off wireless and then turned it
back on using NetworkManager's menu, NM thought it was back on but it
didn't seem to work until I pushed the rfkill button again.  dell-rbtn
does very strange things with device creation and deletion, and maybe
that's related.

> > My proposal is to modify dell_wmi to handle 0x151 (ignore), 0x152
> > (send KEY_SWITCHVIDEOMODE), and 0x153 (send KEY_RFKILL), but only if
> > there isn't something else mapped to them in the DMI table.
> >
> > I've attached dmidecode output and the DSDT.
> >
>
> Can you please provide debug output from dell-wmi module when you press
> those hotkeys? Specially I want to see wmi buffer for each pressed
> hotkey. In debug dmesg it starts with "Received WMI event" and "Process
> buffer". Look into dell-wmi.c source code.

It looks like this:

[ 7822.601910] dell_wmi: Received WMI event (02 00 10 00 53 01 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00)
[ 7822.601913] dell_wmi: Process buffer (02 00 10 00 53 01)
[ 7822.601915] dell_wmi: Key 153 pressed

--Andy

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

* Re: [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake
  2015-11-17 19:03             ` Andy Lutomirski
@ 2015-11-18  3:44               ` Andy Lutomirski
  0 siblings, 0 replies; 5+ messages in thread
From: Andy Lutomirski @ 2015-11-18  3:44 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Alex Hung, Mario Limonciello, Matthew Garrett,
	platform-driver-x86, linux-kernel@vger.kernel.org,
	libsmbios-devel

On Tue, Nov 17, 2015 at 11:03 AM, Andy Lutomirski <luto@amacapital.net> wrote:
> On Nov 17, 2015 12:36 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
>>
>> On Saturday 14 November 2015 18:07:57 Andy Lutomirski wrote:
>> > [lots of people added]
>> >
>> > On Sat, Nov 14, 2015 at 8:13 AM, Pali Rohár <pali.rohar@gmail.com>
>> > wrote:
>> > > On Saturday 14 November 2015 16:48:25 Andy Lutomirski wrote:
>> > >> On Nov 14, 2015 1:27 AM, "Pali Rohár" <pali.rohar@gmail.com> wrote:
>> > >> > On Friday 13 November 2015 21:49:30 Andy Lutomirski wrote:
>> > >> > > The XPS 13 Skylake has an rfkill button and a switchvideomode
>> > >> > > button that aren't enumerated in the DMI table AFAICT.  Add a
>> > >> > > table listing extra un-enumerated hotkeys.  To avoid breaking
>> > >> > > things that worked before, these un-enumerated hotkeys won't
>> > >> > > be used if the DMI table maps them to something else.
>> > >> >
>> > >> > Do you have any (Dell) documentation which specify list of these
>> > >> > wmi codes send to dell-wmi driver?
>> > >>
>> > >> No.  Do you know where to get that documentation?
>> > >
>> > > Time to time Dell release some documentation or example code. You
>> > > could ask Dell people on LKML (e.g. Mario Limonciello is active)
>> > > or on smbios mailing list libsmbios-devel@lists.us.dell.com.
>> > >
>> > > But currently there there are open questions about WMI hotkeys on
>> > > Dell Vostro V131 which we cannot fix yet :-(
>> >
>> > On the Dell XPS 13 Skylake (XPS 13 9350), upstream Linux doesn't
>> > support the rfkill button.
>> >
>> > There seem to be three WMI events that aren't reflected in the OEM
>> > type 178 DMI table:
>> >
>> > 0x151: Fn-lock (no action needed by OS)
>> > 0x152: Switch video mode (should send KEY_SWITCHVIDEOMODE, but
>> > currently just warns)
>> > 0x153: rfkill -- currently warns, and see below.
>> >
>> > On several Dell models, there's the dell_rbtn (DELRBTN / DELLABCE)
>> > device.  It's here in the DSDT, too, but it seems to be disabled if
>> > _OSI reports "Windows 2012" or "Windows 2013", so _STA returns zero.
>> > (It also shows up as DELLRBC6, but I haven't tried all the _OSI
>> > hackery that seems to be needed in order to test the driver.)
>> >
>>
>> Hi!
>>
>> In your ASL code is:
>>
>>             Method (_STA, 0, NotSerialized)  // _STA: Status
>>             {
>>                 If ((OIDE () < One))
>>                 {
>>                     Return (0x0F)
>>                 }
>>
>>                 Return (Zero)
>>             }
>>
>> OIDE() returns 1 for Windows 8.
>>
>> This is quite interesting, on my Latitude E6440 is this ASL code:
>>
>>             Method (_STA, 0, NotSerialized)
>>             {
>>                 If (LLess (OIDE (), One))
>>                 {
>>                     Return (Zero)
>>                 }
>>
>>                 Return (0x0F)
>>             }
>>
>> And again OIDE() returns 1 for Windows 8. So behaviour is negated.
>>
>> Can you check if you have latest version of BIOS? Maybe Dell written
>> that condition incorrectly?
>>
>
> I'll check later on.  There's one newer version.

No relevant changes in 1.0.4.

--Andy

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

end of thread, other threads:[~2015-11-18  3:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <cover.1447479930.git.luto@kernel.org>
     [not found] ` <db83b63cc163ecc640d5d1c5554f8aa87beaadfc.1447479930.git.luto@kernel.org>
     [not found]   ` <20151114092704.GA25957@pali>
2015-11-14 15:48     ` [PATCH 1/3] dell_wmi: Support new hotkeys on the XPS 13 Skylake Andy Lutomirski
2015-11-14 16:13       ` Pali Rohár
     [not found]         ` <CALCETrWss=zCWhNkR2S_oi_m3W1xNO+UL_-uOnOVeLh5WHsDgQ@mail.gmail.com>
2015-11-17  8:36           ` Pali Rohár
2015-11-17 19:03             ` Andy Lutomirski
2015-11-18  3:44               ` Andy Lutomirski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox