* [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
@ 2026-06-16 17:11 Raphaël Larocque
2026-06-16 18:49 ` Dmitry Torokhov
2026-06-17 2:56 ` Raphaël Larocque
0 siblings, 2 replies; 5+ messages in thread
From: Raphaël Larocque @ 2026-06-16 17:11 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, Raphaël Larocque
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>
---
drivers/input/mouse/synaptics.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index c70502e24031..8f38bc498798 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -1837,6 +1837,14 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
return -ENXIO;
}
+
+ /* Disable intertouch on known-broken board revisions */
+ if (info->board_id == 2722) {
+ psmouse_info(psmouse,
+ "Disabling intertouch for board id %d\n",
+ info->board_id);
+ return -ENXIO;
+ }
}
psmouse_info(psmouse, "Trying to set up SMBus access\n");
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
2026-06-16 17:11 [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722) Raphaël Larocque
@ 2026-06-16 18:49 ` Dmitry Torokhov
2026-06-17 2:56 ` Raphaël Larocque
1 sibling, 0 replies; 5+ messages in thread
From: Dmitry Torokhov @ 2026-06-16 18:49 UTC (permalink / raw)
To: Raphaël Larocque; +Cc: linux-input, linux-kernel
Hi Raphaël,
On Tue, Jun 16, 2026 at 01:11:36PM -0400, Raphaël Larocque wrote:
> 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.
Is this board ID unique to T440p? Or it may be used in other devices as
well?
I also wonder, if you try loading psmouse later in the initialization
cycle, after SMBus has been loaded, if that would help it detect the
touchpad quicker? Is there anything interested in DTS regarding device
interconnect/hierarchy that we might be missing?
>
> Tested-by: Raphaël Larocque <rlarocque@disroot.org>
> Signed-off-by: Raphaël Larocque <rlarocque@disroot.org>
> ---
> drivers/input/mouse/synaptics.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> index c70502e24031..8f38bc498798 100644
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -1837,6 +1837,14 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
>
> return -ENXIO;
> }
> +
> + /* Disable intertouch on known-broken board revisions */
> + if (info->board_id == 2722) {
> + psmouse_info(psmouse,
> + "Disabling intertouch for board id %d\n",
> + info->board_id);
> + return -ENXIO;
> + }
> }
>
> psmouse_info(psmouse, "Trying to set up SMBus access\n");
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
2026-06-16 17:11 [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722) Raphaël Larocque
2026-06-16 18:49 ` Dmitry Torokhov
@ 2026-06-17 2:56 ` Raphaël Larocque
2026-06-17 3:04 ` sashiko-bot
2026-06-17 3:34 ` Raphaël Larocque
1 sibling, 2 replies; 5+ messages in thread
From: Raphaël Larocque @ 2026-06-17 2:56 UTC (permalink / raw)
To: linux-input; +Cc: linux-kernel, dmitry.torokhov, Raphaël Larocque
The Lenovo ThinkPad T440p (PNP ID LEN0036, board id 2722) has a
Synaptics touchpad whose SMBus companion is not ready at boot and
takes ~200 s to appear. During this window the touchpad
and pointer 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 PNP ID LEN0036 with 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>
---
drivers/input/mouse/synaptics.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index c70502e24031..982685918459 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -1837,6 +1837,16 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
return -ENXIO;
}
+
+ /* Disable intertouch on known-broken board revisions */
+ if (psmouse_matches_pnp_id(psmouse,
+ (const char * const []){"LEN0036", NULL}) &&
+ info->board_id == 2722) {
+ psmouse_info(psmouse,
+ "Disabling intertouch for board id %d\n",
+ info->board_id);
+ return -ENXIO;
+ }
}
psmouse_info(psmouse, "Trying to set up SMBus access\n");
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
2026-06-17 2:56 ` Raphaël Larocque
@ 2026-06-17 3:04 ` sashiko-bot
2026-06-17 3:34 ` Raphaël Larocque
1 sibling, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-06-17 3:04 UTC (permalink / raw)
To: Raphaël Larocque; +Cc: linux-input, dmitry.torokhov
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Format specifier type mismatch in `psmouse_info` call.
--
commit 0fa38fb74cf1360727ab0551657ea6c7dcbf7b75
Author: Raphaël Larocque <rlarocque@disroot.org>
Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
This commit disables SMBus InterTouch for the ThinkPad T440p (board id 2722)
by matching its PNP ID and board ID. This ensures the touchpad works via
PS/2 immediately at boot, bypassing a long delay caused by the SMBus
companion device taking time to initialize.
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -1837,6 +1837,16 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
[ ... ]
> + /* Disable intertouch on known-broken board revisions */
> + if (psmouse_matches_pnp_id(psmouse,
> + (const char * const []){"LEN0036", NULL}) &&
> + info->board_id == 2722) {
> + psmouse_info(psmouse,
> + "Disabling intertouch for board id %d\n",
> + info->board_id);
[Severity: Low]
This isn't a bug, but should the format specifier for info->board_id be %u
instead of %d?
Looking at struct synaptics_device_info, board_id is declared as a u32:
struct synaptics_device_info {
...
u32 board_id; /* Board-ID */
...
};
While 2722 easily fits in a signed integer, using %u would avoid potential
format string warnings under stricter warning levels.
> + return -ENXIO;
> + }
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260617025619.41237-1-rlarocque@disroot.org?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
2026-06-17 2:56 ` Raphaël Larocque
2026-06-17 3:04 ` sashiko-bot
@ 2026-06-17 3:34 ` Raphaël Larocque
1 sibling, 0 replies; 5+ messages in thread
From: Raphaël Larocque @ 2026-06-17 3:34 UTC (permalink / raw)
To: linux-input; +Cc: linux-kernel, dmitry.torokhov, Raphaël Larocque
The Lenovo ThinkPad T440p (PNP ID LEN0036, board id 2722) has a
Synaptics touchpad whose SMBus companion is not ready at boot and
takes ~200 s to appear. During this window the touchpad
and pointer 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 PNP ID LEN0036 with 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>
---
drivers/input/mouse/synaptics.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index c70502e24031..dd11ffdd51ae 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -1837,6 +1837,16 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
return -ENXIO;
}
+
+ /* Disable intertouch on known-broken board revisions */
+ if (psmouse_matches_pnp_id(psmouse,
+ (const char * const []){"LEN0036", NULL}) &&
+ info->board_id == 2722) {
+ psmouse_info(psmouse,
+ "Disabling intertouch for board id %u\n",
+ info->board_id);
+ return -ENXIO;
+ }
}
psmouse_info(psmouse, "Trying to set up SMBus access\n");
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-06-17 3:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-16 17:11 [PATCH] Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722) Raphaël Larocque
2026-06-16 18:49 ` Dmitry Torokhov
2026-06-17 2:56 ` Raphaël Larocque
2026-06-17 3:04 ` sashiko-bot
2026-06-17 3:34 ` Raphaël Larocque
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox