diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c index 3b0f3346dc607f..21ed9d26e37ff7 100644 --- a/drivers/platform/x86/asus-nb-wmi.c +++ b/drivers/platform/x86/asus-nb-wmi.c @@ -154,6 +154,11 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = { .key_wlan_event = ASUS_WMI_KEY_IGNORE, }; +static struct quirk_entry quirk_asus_gx651ar = { + .wmi_backlight_set_devstate = true, + .ignore_wlan_enable_event = true, +}; + static struct quirk_entry quirk_asus_z13 = { .key_wlan_event = ASUS_WMI_KEY_ARMOURY, .tablet_switch_mode = asus_wmi_kbd_dock_devid, @@ -540,6 +545,15 @@ static const struct dmi_system_id asus_quirks[] = { }, .driver_data = &quirk_asus_ignore_fan, }, + { + .callback = dmi_matched, + .ident = "ASUS ROG Zephyrus Duo GX651AR", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUS"), + DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus Duo GX651AR"), + }, + .driver_data = &quirk_asus_gx651ar, + }, { .callback = dmi_matched, .ident = "ASUS Zenbook Duo UX8406MA", @@ -710,6 +724,11 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code, case 0x5D: /* Wireless console Toggle */ case 0x5E: /* Wireless console Enable / Keyboard Attach, Detach */ case 0x5F: /* Wireless console Disable / Special Key */ + /* Ignore keyboard attach/detach events on affected models. */ + if (*code == 0x5E && quirks->ignore_wlan_enable_event) { + *code = ASUS_WMI_KEY_IGNORE; + break; + } if (quirks->key_wlan_event) *code = quirks->key_wlan_event; break; diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h index b45f81b38a4752..c1977891260615 100644 --- a/drivers/platform/x86/asus-wmi.h +++ b/drivers/platform/x86/asus-wmi.h @@ -42,6 +42,7 @@ struct quirk_entry { bool wmi_ignore_fan; bool filter_i8042_e1_extended_codes; int key_wlan_event; + bool ignore_wlan_enable_event; enum asus_wmi_tablet_switch_mode tablet_switch_mode; int wapf; /*