linux/drivers/input/mouse
Raphaël Larocque 26eb3d92c7 Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
The Lenovo ThinkPad T440p (PNP ID LEN0036, board id 2722) has a
Synaptics touchpad whose SMBus companion is not ready at boot and
takes roughly 200 seconds to appear. During this window the touchpad
and TrackPoint are completely unresponsive on approximately 50% of
boots, making the machine unusable until the companion finally
registers.

The device is in the topbuttonpad_pnp_ids[] SMBus allowlist, so the
kernel attempts to use SMBus/RMI4 mode by default. When the companion
is not ready, psmouse_smbus_init() leaves breadcrumbs and returns
-EAGAIN, the PS/2 fallback path is taken, but the device does not
function properly until the companion appears and RMI4 takes over.

Disable SMBus InterTouch for board id 2722 so the touchpad and
TrackPoint work immediately via PS/2 from boot. Users can still force
SMBus with psmouse.synaptics_intertouch=1 if needed.

Tested-by: Raphaël Larocque <rlarocque@disroot.org>
Signed-off-by: Raphaël Larocque <rlarocque@disroot.org>
Link: https://patch.msgid.link/20260910164425.12832-1-rlarocque@disroot.org
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-09-13 16:13:56 -07:00
..
alps.c Input: alps - use standard workqueue when registering supplemental device 2026-03-12 11:16:29 -07:00
alps.h Input: alps - use standard workqueue when registering supplemental device 2026-03-12 11:16:29 -07:00
amimouse.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
appletouch.c Input: appletouch - refactor endpoint lookup 2026-03-30 16:54:41 -07:00
atarimouse.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
bcm5974.c Merge branch 'next' into for-linus 2026-04-19 18:28:57 -07:00
byd.c Input: byd - synchronize timer deletion before freeing private data 2026-07-22 11:53:56 -07:00
byd.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
cyapa_gen3.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cyapa_gen5.c Input: cyapa - remove redundant pm_runtime_mark_last_busy() calls 2025-12-13 01:23:01 -08:00
cyapa_gen6.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cyapa.c Input: Use named initializers for arrays of i2c_device_data 2026-05-30 22:10:47 -07:00
cyapa.h
cypress_ps2.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cypress_ps2.h Input: cypress_ps2 - fix error handling when sending command fails 2024-07-03 13:48:53 -07:00
elan_i2c_core.c Input: elan_i2c - sort include statements 2026-08-12 17:44:06 -07:00
elan_i2c_i2c.c Input: elan_i2c - optimize update speed for IC Type 0x19. 2026-08-12 17:37:45 -07:00
elan_i2c_smbus.c Input: elan_i2c - optimize update speed for IC Type 0x19. 2026-08-12 17:37:45 -07:00
elan_i2c.h Input: elan_i2c - optimize update speed for IC Type 0x19. 2026-08-12 17:37:45 -07:00
elantech.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
elantech.h Input: elantech - fix protocol errors for some trackpoints in SMBus mode 2020-12-11 00:15:05 -08:00
focaltech.c Merge branch 'next' into for-linus 2026-08-14 21:26:07 -07:00
focaltech.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio_mouse.c Input: gpio_mouse - fix typos in comments 2022-06-22 15:29:35 -07:00
Kconfig Input updates for v7.1-rc0 2026-04-22 18:36:40 -07:00
lifebook.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
lifebook.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
logips2pp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
logips2pp.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
Makefile Input updates for v7.1-rc0 2026-04-22 18:36:40 -07:00
maplemouse.c Input: maplemouse - set driver data before registering input device 2026-07-02 22:48:57 -07:00
psmouse-base.c Input: psmouse - use guard() for resource management 2026-08-03 17:06:27 -07:00
psmouse-smbus.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
psmouse.h Input: psmouse - remove dedicated kpsmoused workqueue 2026-03-12 11:16:30 -07:00
rpcmouse.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
sentelic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
sentelic.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
sermouse.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
synaptics_i2c.c Input: synaptics_i2c - return 0 explicitly on success 2026-08-04 21:27:53 -07:00
synaptics_usb.c Input: synaptics_usb - refactor endpoint lookup 2026-03-30 16:54:41 -07:00
synaptics.c Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722) 2026-09-13 16:13:56 -07:00
synaptics.h Input: synaptics - fix crash when enabling pass-through port 2025-01-20 21:27:02 -08:00
touchkit_ps2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
touchkit_ps2.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
trackpoint.c input: trackpoint - Enable doubletap by default on capable devices 2026-03-17 15:27:22 +02:00
trackpoint.h input: trackpoint - Enable doubletap by default on capable devices 2026-03-17 15:27:22 +02:00
vmmouse.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
vmmouse.h Input: psmouse - drop all unneeded functions from mouse headers 2019-08-20 14:15:36 -07:00
vsxxxaa.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00