mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
platform/x86: ideapad-laptop: Do not send KEY_TOUCHPAD* events on probe / resume
The sending of KEY_TOUCHPAD* events is causing spurious touchpad OSD showing on resume. Disable the sending of events on probe / resume to fix this. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Tested-by: Maxim Mikityanskiy <maxtram95@gmail.com> Link: https://lore.kernel.org/r/20221117110244.67811-3-hdegoede@redhat.com
This commit is contained in:
parent
289a59895e
commit
f4dd8c44bb
@ -1487,7 +1487,7 @@ static void ideapad_kbd_bl_exit(struct ideapad_private *priv)
|
||||
/*
|
||||
* module init/exit
|
||||
*/
|
||||
static void ideapad_sync_touchpad_state(struct ideapad_private *priv)
|
||||
static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_events)
|
||||
{
|
||||
unsigned long value;
|
||||
unsigned char param;
|
||||
@ -1508,8 +1508,11 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv)
|
||||
* KEY_TOUCHPAD_ON to not to get out of sync with LED
|
||||
*/
|
||||
i8042_command(¶m, value ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE);
|
||||
ideapad_input_report(priv, value ? 67 : 66);
|
||||
sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
|
||||
|
||||
if (send_events) {
|
||||
ideapad_input_report(priv, value ? 67 : 66);
|
||||
sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
|
||||
}
|
||||
}
|
||||
|
||||
static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)
|
||||
@ -1550,7 +1553,7 @@ static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)
|
||||
ideapad_sync_rfk_state(priv);
|
||||
break;
|
||||
case 5:
|
||||
ideapad_sync_touchpad_state(priv);
|
||||
ideapad_sync_touchpad_state(priv, true);
|
||||
break;
|
||||
case 4:
|
||||
ideapad_backlight_notify_brightness(priv);
|
||||
@ -1840,7 +1843,7 @@ static int ideapad_acpi_add(struct platform_device *pdev)
|
||||
ideapad_register_rfkill(priv, i);
|
||||
|
||||
ideapad_sync_rfk_state(priv);
|
||||
ideapad_sync_touchpad_state(priv);
|
||||
ideapad_sync_touchpad_state(priv, false);
|
||||
|
||||
err = ideapad_dytc_profile_init(priv);
|
||||
if (err) {
|
||||
@ -1925,7 +1928,7 @@ static int ideapad_acpi_resume(struct device *dev)
|
||||
struct ideapad_private *priv = dev_get_drvdata(dev);
|
||||
|
||||
ideapad_sync_rfk_state(priv);
|
||||
ideapad_sync_touchpad_state(priv);
|
||||
ideapad_sync_touchpad_state(priv, false);
|
||||
|
||||
if (priv->dytc)
|
||||
dytc_profile_refresh(priv);
|
||||
|
Loading…
Reference in New Issue
Block a user