On latest kernel, I made this temporary patch, and it works for me. The maintainers do not allow it, as it can add several seconds to boot time, but you can use it until I find a better fix. The patch:
`From bded4ccba6f762fa6cc2fd711da48b8e830b0fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Larocque?= <[email protected]> Date: Tue, 2 Jun 2026 18:53:41 -0400 Subject: [PATCH] Input: synaptics - retry SMBus intertouch setup when companion is not ready MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On some machines (here: Lenovo ThinkPad T440p 20AWS0H800), the SMBus companion device is not ready by the time psmouse probes the Synaptics touchpad during early boot. synaptics_setup_intertouch() returns -EAGAIN in this situation, but synaptics_init() previously treated this the same as any other error and fell through immediately to PS/2 mode. As a result, the touchpad and TrackPoint were unresponsive for several minutes after a cold boot, until an internal reconnect cycle (which already carries retry logic in synaptics_reconnect()) eventually succeeded. Fix this by adding an exponential back-off retry loop in synaptics_init() when synaptics_setup_intertouch() returns -EAGAIN: clean up the failed state, sleep for 500 ms on the first attempt doubling each time up to 4000 ms, then retry. The worst-case added latency at boot is ~7.5 s (500 + 1000 + 2000 + 4000 ms), and only for hardware that actually reports SYN_CAP_INTERTOUCH. The pattern mirrors what synaptics_reconnect() already does after resume. Tested-by: Raphaël Larocque <[email protected]> Signed-off-by: Raphaël Larocque <[email protected]> --- drivers/input/mouse/synaptics.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index c70502e24031..5c1bfff2b16c 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -1918,6 +1918,23 @@ int synaptics_init(struct psmouse *psmouse) } error = synaptics_setup_intertouch(psmouse, &info, true); + if (error == -EAGAIN) { + /* + * On some systems (e.g. ThinkPad T440p) the SMBus + * companion device is not yet ready at boot time. + * Clean up and retry with exponential back-off, + * mirroring synaptics_reconnect(). + */ + unsigned int delay = 500; + + do { + psmouse_smbus_cleanup(psmouse); + msleep(delay); + error = synaptics_setup_intertouch(psmouse, &info, true); + delay *= 2; + } while (error == -EAGAIN && delay <= 4000); + } + if (!error) return PSMOUSE_SYNAPTICS_SMBUS; } -- 2.53.0` -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/787738 Title: [Thinkpad X220/E220s/E420s] trackpoint/trackpoint displays odd behaviour To manage notifications about this bug go to: https://bugs.launchpad.net/linux/+bug/787738/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
