[PATCH v3 0/3] Input: ilitek_ts: add stylus support for 0x0c reports

Kristian Mide posted 3 patches 13 hours ago
drivers/input/touchscreen/ilitek_ts_i2c.c | 149 +++++++++++++++++++++-
1 file changed, 144 insertions(+), 5 deletions(-)
[PATCH v3 0/3] Input: ilitek_ts: add stylus support for 0x0c reports
Posted by Kristian Mide 13 hours ago
Hi,

I bought a CHUWI Hi10 Max and was annoyed to find that the built-in
stylus was not usable with the upstream ilitek_ts driver.

This series adds support for the pen report format emitted by the
device, exposing the stylus as a separate input device with hover,
pressure, and side-button support. The pen device is created lazily on
first pen report so touchscreen-only hardware does not advertise stylus
capabilities up front.

The packet format was reverse engineered on this device. In particular,
report ID 0x0c appears to carry pen events, pressure comes from
buf[6..7] shifted right by one, and the side buttons map to two bits in
buf[1].

Changes in v3:
- return success after ratelimited unexpected-report logging so the IRQ
  handler does not emit a second unratelimited error
- use input_set_capability() for pen key capabilities

Changes in v2:
- manage the lazy pen device lifetime explicitly and tear down the IRQ
  before unregistering the pen device
- sync pen axis limits with the DT-adjusted touch axis limits
- reject short I2C transfers in ilitek_i2c_write_and_read()
- split the short-transfer fix from the ratelimited logging change

On the tested CHUWI Hi10 Max this makes the pen usable in GNOME/Krita,
including pressure and side buttons.

Thanks,
Kristian

Kristian Mide (3):
  Input: ilitek_ts: add stylus input support
  Input: ilitek_ts: handle short I2C transfers
  Input: ilitek_ts: ratelimit unexpected report logging

 drivers/input/touchscreen/ilitek_ts_i2c.c | 149 +++++++++++++++++++++-
 1 file changed, 144 insertions(+), 5 deletions(-)

-- 
2.54.0