Input: i8042 - swap old quirk combination with new quirk for more devices
authorWerner Sembach <wse@tuxedocomputers.com>
Fri, 21 Feb 2025 23:01:25 +0000 (00:01 +0100)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 25 Feb 2025 21:01:51 +0000 (13:01 -0800)
Some older Clevo barebones have problems like no or laggy keyboard after
resume or boot which can be fixed with the SERIO_QUIRK_FORCENORESTORE
quirk.

We could not activly retest these devices because we no longer have them in
our archive, but based on the other old Clevo barebones we tested where the
new quirk had the same or a better behaviour I think it would be good to
apply it on these too.

Cc: stable@vger.kernel.org
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Link: https://lore.kernel.org/r/20250221230137.70292-4-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/serio/i8042-acpipnpio.h

index 9df1ef6032dd04d3866fef757b74ea96aa147465..6ed9fc34948cbecfad317886bdcbec8d6eb2acc2 100644 (file)
@@ -1157,9 +1157,7 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
        },
        /*
         * 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.
+        * after suspend fixable with the forcenorestore quirk.
         * Clevo barebones come with board_vendor and/or system_vendor set to
         * either the very generic string "Notebook" and/or a different value
         * for each individual reseller. The only somewhat universal way to
@@ -1175,22 +1173,19 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_BOARD_NAME, "LAPQC71B"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                .matches = {
                        DMI_MATCH(DMI_BOARD_NAME, "N140CU"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                .matches = {
                        DMI_MATCH(DMI_BOARD_NAME, "N141CU"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                .matches = {
@@ -1250,8 +1245,7 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_BOARD_NAME, "NJ50_70CU"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                .matches = {
@@ -1268,16 +1262,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "P65xH"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                /* Clevo P650RS, 650RP6, Sager NP8152-S, and others */
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                /*
@@ -1288,8 +1280,7 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "P65_P67H"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                /*
@@ -1300,8 +1291,7 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "P65_67RP"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                /*
@@ -1323,8 +1313,7 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
                .matches = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "P67xRP"),
                },
-               .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
-                                       SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+               .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
        },
        {
                .matches = {