Re: [PATCH 2/2] Input: i8042 - add TUXEDO devices to i8042 quirk tables for partial fix

From: Hans de Goede
Date: Mon Jul 11 2022 - 08:56:07 EST


Hi,

On 7/11/22 14:45, Werner Sembach wrote:
> Hi,
>
> On 7/8/22 21:39, Hans de Goede wrote:
>> Hi,
>>
>> On 7/8/22 18:10, Werner Sembach wrote:
>>> A lot of modern Clevo barebones have touchpad and/or keyboard issues after
>>> suspend fixable with nomux + reset + noloop + nopnp. Luckily, none of them
>>> have an external PS/2 port so this can safely be set for all of them.
>>>
>>> I'm not entirely sure if every device listed really needs all four quirks,
>>> but after testing and production use. No negative effects could be
>>> observed when setting all four.
>>>
>>> Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS on the Clevo N150CU
>>> and the Clevo NHxxRZQ makes the keyboard very laggy for ~5 seconds after
>>> boot and sometimes also after resume. However both are required for the
>>> keyboard to not fail completely sometimes after boot or resume.
>> Hmm, the very laggy bit does not sound good. Have you looked into other
>> solutions, e.g. what happens if you use just nomux without any of the
>> other 3 options ?
>
> I tried a lot of combinations, but it was some time ago.
>
> iirc: at least nomux and reset are required and both individually cause the lagging.
>
> So the issue is not fixed by just using a different set of quirks.

Hmm, ok. So given that this seems to be the best we can do
the patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>

Regards,

Hans



>>> Signed-off-by: Werner Sembach <wse@xxxxxxxxxxxxxxxxxxx>
>>> Cc: stable@xxxxxxxxxxxxxxx
>>> ---
>>>   drivers/input/serio/i8042-x86ia64io.h | 28 +++++++++++++++++++++++++++
>>>   1 file changed, 28 insertions(+)
>>>
>>> diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
>>> index 5204a7dd61d4..9dc0266e5168 100644
>>> --- a/drivers/input/serio/i8042-x86ia64io.h
>>> +++ b/drivers/input/serio/i8042-x86ia64io.h
>>> @@ -1107,6 +1107,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
>>>           .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
>>>                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
>>>       },
>>> +    {
>>> +        /*
>>> +         * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes
>>> +         * the keyboard very laggy for ~5 seconds after boot and
>>> +         * sometimes also after resume.
>>> +         * However both are required for the keyboard to not fail
>>> +         * completely sometimes after boot or resume.
>>> +         */
>>> +        .matches = {
>>> +            DMI_MATCH(DMI_BOARD_NAME, "N150CU"),
>>> +        },
>>> +        .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
>>> +                    SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
>>> +    },
>>>       {
>>>           .matches = {
>>>               DMI_MATCH(DMI_BOARD_NAME, "NH5xAx"),
>>> @@ -1114,6 +1128,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
>>>           .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
>>>                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
>>>       },
>>> +    {
>>> +        /*
>>> +         * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes
>>> +         * the keyboard very laggy for ~5 seconds after boot and
>>> +         * sometimes also after resume.
>>> +         * However both are required for the keyboard to not fail
>>> +         * completely sometimes after boot or resume.
>>> +         */
>>> +        .matches = {
>>> +            DMI_MATCH(DMI_BOARD_NAME, "NHxxRZQ"),
>>> +        },
>>> +        .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
>>> +                    SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
>>> +    },
>>>       {
>>>           .matches = {
>>>               DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
>