mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-08 14:54:23 +08:00
platform/x86: asus-wmi: Simplify tablet-mode-switch probing
[ Upstream commitc98dc61ee0
] The 3 different tablet-mode-switch initialization paths repeat a lot of the same code. Add a helper function for this. This also makes the error-handling for the kbd_dock_devid case consistent with the other 2 cases. Cc: Luke D. Jones <luke@ljones.dev> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Link: https://lore.kernel.org/r/20220824151145.1448010-1-hdegoede@redhat.com Stable-dep-of:b52cbca22c
("platform/x86: asus-wmi: Move i8042 filter install to shared asus-wmi code") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
36ede14746
commit
f277c14b6d
@ -364,13 +364,28 @@ static bool asus_wmi_dev_is_present(struct asus_wmi *asus, u32 dev_id)
|
||||
}
|
||||
|
||||
/* Input **********************************************************************/
|
||||
static void asus_wmi_tablet_sw_init(struct asus_wmi *asus, u32 dev_id, int event_code)
|
||||
{
|
||||
struct device *dev = &asus->platform_device->dev;
|
||||
int result;
|
||||
|
||||
result = asus_wmi_get_devstate_simple(asus, dev_id);
|
||||
if (result < 0)
|
||||
asus->driver->quirks->tablet_switch_mode = asus_wmi_no_tablet_switch;
|
||||
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) {
|
||||
dev_err(dev, "This device has tablet-mode-switch quirk but got ENODEV checking it. This is a bug.");
|
||||
} else {
|
||||
dev_err(dev, "Error checking for tablet-mode-switch: %d\n", result);
|
||||
}
|
||||
}
|
||||
|
||||
static int asus_wmi_input_init(struct asus_wmi *asus)
|
||||
{
|
||||
struct device *dev;
|
||||
int err, result;
|
||||
|
||||
dev = &asus->platform_device->dev;
|
||||
struct device *dev = &asus->platform_device->dev;
|
||||
int err;
|
||||
|
||||
asus->inputdev = input_allocate_device();
|
||||
if (!asus->inputdev)
|
||||
@ -390,39 +405,13 @@ static int asus_wmi_input_init(struct asus_wmi *asus)
|
||||
case asus_wmi_no_tablet_switch:
|
||||
break;
|
||||
case asus_wmi_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) {
|
||||
dev_err(dev, "Error checking for keyboard-dock: %d\n", result);
|
||||
}
|
||||
asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_KBD_DOCK, NOTIFY_KBD_DOCK_CHANGE);
|
||||
break;
|
||||
case asus_wmi_lid_flip_devid:
|
||||
result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_LID_FLIP);
|
||||
if (result < 0)
|
||||
asus->driver->quirks->tablet_switch_mode = asus_wmi_no_tablet_switch;
|
||||
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) {
|
||||
dev_err(dev, "This device has lid_flip quirk but got ENODEV checking it. This is a bug.");
|
||||
} else {
|
||||
dev_err(dev, "Error checking for lid-flip: %d\n", result);
|
||||
}
|
||||
asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_LID_FLIP, NOTIFY_LID_FLIP);
|
||||
break;
|
||||
case asus_wmi_lid_flip_rog_devid:
|
||||
result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_LID_FLIP_ROG);
|
||||
if (result < 0)
|
||||
asus->driver->quirks->tablet_switch_mode = asus_wmi_no_tablet_switch;
|
||||
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) {
|
||||
dev_err(dev, "This device has lid-flip-rog quirk but got ENODEV checking it. This is a bug.");
|
||||
} else {
|
||||
dev_err(dev, "Error checking for lid-flip: %d\n", result);
|
||||
}
|
||||
asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_LID_FLIP_ROG, NOTIFY_LID_FLIP_ROG);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user