@@ -76,7 +76,7 @@ static inline void i8042_write_command(int val)
7676#define SERIO_QUIRK_PROBE_DEFER BIT(5)
7777#define SERIO_QUIRK_RESET_ALWAYS BIT(6)
7878#define SERIO_QUIRK_RESET_NEVER BIT(7)
79- #define SERIO_QUIRK_DIECT BIT(8)
79+ #define SERIO_QUIRK_DIRECT BIT(8)
8080#define SERIO_QUIRK_DUMBKBD BIT(9)
8181#define SERIO_QUIRK_NOLOOP BIT(10)
8282#define SERIO_QUIRK_NOTIMEOUT BIT(11)
@@ -1332,6 +1332,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
13321332 .driver_data = (void * )(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
13331333 SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP )
13341334 },
1335+ {
1336+ /*
1337+ * The Ayaneo Kun is a handheld device where some the buttons
1338+ * are handled by an AT keyboard. The keyboard is usually
1339+ * detected as raw, but sometimes, usually after a cold boot,
1340+ * it is detected as translated. Make sure that the keyboard
1341+ * is always in raw mode.
1342+ */
1343+ .matches = {
1344+ DMI_EXACT_MATCH (DMI_BOARD_VENDOR , "AYANEO" ),
1345+ DMI_MATCH (DMI_BOARD_NAME , "KUN" ),
1346+ },
1347+ .driver_data = (void * )(SERIO_QUIRK_DIRECT )
1348+ },
13351349 { }
13361350};
13371351
@@ -1655,7 +1669,7 @@ static void __init i8042_check_quirks(void)
16551669 if (quirks & SERIO_QUIRK_RESET_NEVER )
16561670 i8042_reset = I8042_RESET_NEVER ;
16571671 }
1658- if (quirks & SERIO_QUIRK_DIECT )
1672+ if (quirks & SERIO_QUIRK_DIRECT )
16591673 i8042_direct = true;
16601674 if (quirks & SERIO_QUIRK_DUMBKBD )
16611675 i8042_dumbkbd = true;
0 commit comments