[PATCH v2 0/2] Input: add Synaptics TouchComm I2C touchscreen driver and bindings
From: Vsevolod Nevorotov <hidden>
Date: 2026-09-10 09:14:55
Also in:
linux-devicetree, lkml
This series adds devicetree schema bindings and an input touchscreen
driver for Synaptics TouchComm (TCM) generation-1 touchscreen controllers
connected over I2C, such as the Synaptics S3908 found in the OnePlus 9RT.
The S3908 and compatible generation-1 controllers boot autonomously into
application mode directly out of their embedded flash memory. The driver
implements communication using the Synaptics TouchComm packet protocol,
retrieving device identify information and handling reports through a
threaded interrupt handler.
Features supported:
- Multi-touch reporting using the input_mt framework (Protocol B)
- Dynamic touch report layouts and coordinate/pressure decoding
- Standard touchscreen properties (axis swapping/inversion)
- Low-power wakeup gestures (double-tap to wake)
- System suspend / resume with deep sleep transition
- Regulator and reset GPIO lifecycle management
Changes in v2:
- Fixed continued-read chunking in syna_recv_message(): accurately track
stream bytes including the trailing 0x5a padding byte, request full
64-byte I2C chunks (up to 62 stream bytes), and ensure trailing padding
is consumed and verified even for 60-byte aligned payloads.
- Clamped active touch object count in syna_parse_touch_report() to
ts->max_objects and guarded offset calculations against integer overflow
and OOB access in syna_get_bits().
- Made regulator power management idempotent with ts->powered flag to
prevent unbalanced regulator disable warnings during teardown if
hardware recovery fails; power down controller and propagate error code
on recovery failure in syna_resume().
- Removed touchscreen-size-x / touchscreen-size-y overrides from driver
and DT binding example, relying on native resolution reported by
controller firmware.
- Documented mutex locking contract on syna_exec_command().
- Added explanatory comments for ABS_MT_PRESSURE and TOUCH_MAJOR/MINOR
default limits.
- Sorted TOUCHSCREEN_SYNAPTICS_TCM_I2C alphabetically in Kconfig.
- Fixed commit title casing and checkpatch warnings.
Vsevolod Nevorotov (2):
dt-bindings: input: touchscreen: add Synaptics S3908 controller
Input: synaptics_tcm_i2c - add Synaptics TouchComm I2C touchscreen
driver
.../input/touchscreen/syna,s3908.yaml | 69 ++
MAINTAINERS | 7 +
drivers/input/touchscreen/Kconfig | 15 +
drivers/input/touchscreen/Makefile | 1 +
drivers/input/touchscreen/synaptics_tcm_i2c.c | 1066 +++++++++++++++++
5 files changed, 1158 insertions(+)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/syna,s3908.yaml
create mode 100644 drivers/input/touchscreen/synaptics_tcm_i2c.c
--
2.55.0