Re: [PATCH] Added support for a some new buttons in ideapad-laptop driver Added entries to unsuported wmi codes in ideapad_keymap[] and one check in wmi_nofify in order to get wmi code 0x13d to trigger platform_profile_cycle

From: Hans de Goede
Date: Mon Mar 24 2025 - 08:23:28 EST


Hi,

On 21-Mar-25 15:47, Gašper Nemgar wrote:
> Hello, yes I have noticed it messed up the title and will change it,


> I just have a question about the performance button aka WMI code 0x13d, is it smart to hardwire it into platorm_profile_cycle() or is it better to leave it as KEY_PROG4 keycode. Thanks

That depends on what the key does under Windows, if it cycles through performance
settings under Windows then calling platorm_profile_cycle() is the right thing to do.

If it opens some sort of performance settings dialog / Windows then a free KEY_PROG#
would be better.

Regards,

Hans



>
>
> On Fri, 21 Mar 2025 at 15:17, Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx <mailto:ilpo.jarvinen@xxxxxxxxxxxxxxx>> wrote:
>
> On Fri, 21 Mar 2025, Gašper Nemgar wrote:
>
> Hi Gasper,
>
> Thanks for the patch. I think the changelog text got messed up during send
> as it should here, not in the subject.
>
> Also please change "Added support" to "Add support", add the correct
> prefix into the shortlog (the line in Subject), and add parenthesis after
> functions in the description.
>
> --
>  i.
>
> > Signed-off-by: Gašper Nemgar <gasper.nemgar@xxxxxxxxx <mailto:gasper.nemgar@xxxxxxxxx>>"
> > ---
> >  drivers/platform/x86/ideapad-laptop.c | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> >
> > diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
> > index 30bd366d7..a03377d87 100644
> > --- a/drivers/platform/x86/ideapad-laptop.c
> > +++ b/drivers/platform/x86/ideapad-laptop.c
> > @@ -1308,6 +1308,16 @@ static const struct key_entry ideapad_keymap[] = {
> >       /* Specific to some newer models */
> >       { KE_KEY,       0x3e | IDEAPAD_WMI_KEY, { KEY_MICMUTE } },
> >       { KE_KEY,       0x3f | IDEAPAD_WMI_KEY, { KEY_RFKILL } },
> > +     /* Star- (User Asignable Key) */
> > +     { KE_KEY,       0x44 | IDEAPAD_WMI_KEY, { KEY_PROG1 } },
> > +     /* Eye */
> > +     { KE_KEY,       0x45 | IDEAPAD_WMI_KEY, { KEY_BRIGHTNESS_CYCLE } },
> > +     /* Performance toggle also Fn+Q */
> > +     { KE_KEY,       0x3d | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
> > +     /* shift + prtsc */
> > +     { KE_KEY,   0x2d | IDEAPAD_WMI_KEY, { KEY_CUT } },
> > +     { KE_KEY,   0x29 | IDEAPAD_WMI_KEY, { KEY_TOUCHPAD_TOGGLE } },
> > +     { KE_KEY,   0x2a | IDEAPAD_WMI_KEY, { KEY_ROOT_MENU } },
>
> >       { KE_END },
> >  };
> > @@ -2093,6 +2103,12 @@ static void ideapad_wmi_notify(struct wmi_device *wdev, union acpi_object *data)
>
> >               dev_dbg(&wdev->dev, "WMI fn-key event: 0x%llx\n",
> >                       data->integer.value);
> > +                             
> > +             /* performance button triggered by  ...  */
> > +             if ((data->integer.value | IDEAPAD_WMI_KEY) == 0x13d ) {
> > +                     platform_profile_cycle();
> > +                     break;
> > +             }
>
> >               /* 0x02 FnLock, 0x03 Esc */
> >               if (data->integer.value == 0x02 || data->integer.value == 0x03)
> >
>