On Mon, 05 Aug 2024 at 17:45:19 +0200, Hans de Goede wrote:
On 8/5/24 5:30 PM, Maxim Mikityanskiy wrote:
That means, userspace is not filtering out events upon receiving KEY_TOUCHPAD_OFF. If we wanted to rely on that, we would need to send KEY_TOUCHPAD_TOGGLE from the driver, but we actually can't, because Z570 is weird. It maintains the touchpad state in firmware to light up the status LED, but the firmware doesn't do the actual touchpad disablement.
That is, if we use TOGGLE, the LED will get out of sync. If we use ON/OFF, the touchpad won't be disabled, unless we do it in the kernel.
Ack.
So how about this instead:
diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 1ace711f7442..b7fa06f793cb 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -1574,7 +1574,7 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_ * touchpad off and on. We send KEY_TOUCHPAD_OFF and * KEY_TOUCHPAD_ON to not to get out of sync with LED */
- if (priv->features.ctrl_ps2_aux_port)
- if (send_events && priv->features.ctrl_ps2_aux_port) i8042_command(¶m, value ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE);
/*
Maxmime, if you still have your Z570 can you check if the touchpad state after a suspend/resume correctly reflects the state before suspend/resume in both touchpad on / off states ?
*Maxim
Just a heads-up, my Z570 now belongs to a family member, we'll test what you asked, but right now there is a btrfs corruption on that laptop that we need to fix first, it interferes with kernel compilation =/
Sorry for the delay.