Commit 6ec37e6b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v5.9-3' of...

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
parents f1e141e9 1797d588
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -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,
	},
	{},
};

+9 −7
Original line number Diff line number Diff line
@@ -365,6 +365,7 @@ static int asus_wmi_input_init(struct asus_wmi *asus)
	if (err)
		goto err_free_dev;

	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);
@@ -372,6 +373,7 @@ static int asus_wmi_input_init(struct asus_wmi *asus)
		} else if (result != -ENODEV) {
			pr_err("Error checking for keyboard-dock: %d\n", result);
		}
	}

	err = input_register_device(asus->inputdev);
	if (err)
@@ -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) {
+1 −0
Original line number Diff line number Diff line
@@ -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