Thread (4 messages) flat view 4 messages, 2 authors, 4d ago
COOLING4d

Revision v2 of 2 in this series.

Revisions (2)
  1. v1 [diff vs current]
  2. v2 current

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help