mirror of https://gitee.com/openkylin/linux.git
platform-drivers-x86 for v5.9-3
One final pdx86 fix for Tablet Mode reporting regressions (which make the keyboard and touchpad unusable) on various Asus notebooks. This fix has been tested as a downstream patch in Fedora kernels for approx. 2 weeks with no problems being reported. Shortlog: Hans de Goede (1): platform/x86: asus-wmi: Fix SW_TABLET_MODE always reporting 1 on many different models -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEEuvA7XScYQRpenhd+kuxHeUQDJ9wFAl98OiQUHGhkZWdvZWRl QHJlZGhhdC5jb20ACgkQkuxHeUQDJ9wkQgf+NpE3N3HjIvivbTZmgysdVTRdohXv vNzH4tGRLpDtM06FvEWrEt30w/wIHhC1GKwXqJmF4ZraDC53FoRKpK0mRstP4vQO VLiJqkulnqJPq2hyO3d5n7dhPgGTb2ZzsFpta4YkyMqwkfhXzQWDhKN8WDQ/9hql XOdxBRu9zHV0yKGftGzGRlk0gJ+q2IJewU0HaHqdTGkPiWkOoM3yL2y23+f3hrLH QZBiKvJ88T5vM5HY6FTnt4aGD3AZrwZZegrBB+Hza9aaV3nFW+jOjuQKcQ4nBDFy MKkXk8JSssojT87rBp3b9g2zSHbEXGlafyC8hxQVd9YrYk2zsjlikCrHsw== =Decp -----END PGP SIGNATURE----- Merge tag 'platform-drivers-x86-v5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86 Pull another x86 platform driver fix from Hans de Goede: "One final pdx86 fix for Tablet Mode reporting regressions (which make the keyboard and touchpad unusable) on various Asus notebooks. These regressions were caused by the asus-nb-wmi and the intel-vbtn drivers both receiving recent patches to start reporting Tablet Mode / to report it on more models. Due to a miscommunication between Andy and me, Andy's earlier pull-req only contained the fix for the intel-vbtn driver and not the fix for the asus-nb-wmi code. This fix has been tested as a downstream patch in Fedora kernels for approx two weeks with no problems being reported" * tag 'platform-drivers-x86-v5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: platform/x86: asus-wmi: Fix SW_TABLET_MODE always reporting 1 on many different models
This commit is contained in:
commit
6ec37e6bb1
|
@ -115,6 +115,10 @@ static struct quirk_entry quirk_asus_vendor_backlight = {
|
|||
.wmi_backlight_set_devstate = true,
|
||||
};
|
||||
|
||||
static struct quirk_entry quirk_asus_use_kbd_dock_devid = {
|
||||
.use_kbd_dock_devid = true,
|
||||
};
|
||||
|
||||
static int dmi_matched(const struct dmi_system_id *dmi)
|
||||
{
|
||||
pr_info("Identified laptop model '%s'\n", dmi->ident);
|
||||
|
@ -488,6 +492,34 @@ static const struct dmi_system_id asus_quirks[] = {
|
|||
},
|
||||
.driver_data = &quirk_asus_vendor_backlight,
|
||||
},
|
||||
{
|
||||
.callback = dmi_matched,
|
||||
.ident = "Asus Transformer T100TA / T100HA / T100CHI",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
/* Match *T100* */
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "T100"),
|
||||
},
|
||||
.driver_data = &quirk_asus_use_kbd_dock_devid,
|
||||
},
|
||||
{
|
||||
.callback = dmi_matched,
|
||||
.ident = "Asus Transformer T101HA",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "T101HA"),
|
||||
},
|
||||
.driver_data = &quirk_asus_use_kbd_dock_devid,
|
||||
},
|
||||
{
|
||||
.callback = dmi_matched,
|
||||
.ident = "Asus Transformer T200TA",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "T200TA"),
|
||||
},
|
||||
.driver_data = &quirk_asus_use_kbd_dock_devid,
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
|
@ -365,12 +365,14 @@ static int asus_wmi_input_init(struct asus_wmi *asus)
|
|||
if (err)
|
||||
goto err_free_dev;
|
||||
|
||||
result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_KBD_DOCK);
|
||||
if (result >= 0) {
|
||||
input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE);
|
||||
input_report_switch(asus->inputdev, SW_TABLET_MODE, !result);
|
||||
} else if (result != -ENODEV) {
|
||||
pr_err("Error checking for keyboard-dock: %d\n", result);
|
||||
if (asus->driver->quirks->use_kbd_dock_devid) {
|
||||
result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_KBD_DOCK);
|
||||
if (result >= 0) {
|
||||
input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE);
|
||||
input_report_switch(asus->inputdev, SW_TABLET_MODE, !result);
|
||||
} else if (result != -ENODEV) {
|
||||
pr_err("Error checking for keyboard-dock: %d\n", result);
|
||||
}
|
||||
}
|
||||
|
||||
err = input_register_device(asus->inputdev);
|
||||
|
@ -2115,7 +2117,7 @@ static void asus_wmi_handle_event_code(int code, struct asus_wmi *asus)
|
|||
return;
|
||||
}
|
||||
|
||||
if (code == NOTIFY_KBD_DOCK_CHANGE) {
|
||||
if (asus->driver->quirks->use_kbd_dock_devid && code == NOTIFY_KBD_DOCK_CHANGE) {
|
||||
result = asus_wmi_get_devstate_simple(asus,
|
||||
ASUS_WMI_DEVID_KBD_DOCK);
|
||||
if (result >= 0) {
|
||||
|
|
|
@ -33,6 +33,7 @@ struct quirk_entry {
|
|||
bool wmi_backlight_native;
|
||||
bool wmi_backlight_set_devstate;
|
||||
bool wmi_force_als_set;
|
||||
bool use_kbd_dock_devid;
|
||||
int wapf;
|
||||
/*
|
||||
* For machines with AMD graphic chips, it will send out WMI event
|
||||
|
|
Loading…
Reference in New Issue