Used on various phones. Minimal viable driver. Includes device-tree enabling touchscreen on Pixel 3. Also, tested on Xiaomi Mi 8 (device-tree is not yet inside the mainline).
What is missing: - switching between AP and SLPI mode (to be able to wake up phone by touch) - firmware loading - anything above basic touch Signed-off-by: David Heidelberg <[email protected]> --- Changes in v7: - Added 'Input: stmfts - wait for controller ready after reset', the waiting is done for both FTS4 and FTS5, similarly to the downstream driver. Should improve reliability everywhere. - Link to v6: https://patch.msgid.link/[email protected] Changes in v6: - Enable only the multi-touch scan on FTS5 sense-on (0xff was wrong, only 0x01 is needed. This broke Xiaomi Mi 8 toucschreen). - Fixed Y-coordinate comments. (Dmitry) - Corrected event[0] parsing. (Dmitry) - Dropped checking < 0 on unsigned area. (Dmitry) - Dropped unnecessary i2c writes after reset. Verified against downstream driver. (Dmitry, Sashiko) - Added pieces for supporting non-OF integration. (Sashiko) - Shared input open/close into one impl. (Dmitry). - Link to v5: https://patch.msgid.link/[email protected] Changes in v5: - 3.3V is analog, 1.8V is digital supply. Fix that. - Name the error variables "err" (Dmitry) - Use scoped_guard() for ->running, and only set it once the scan mode has actually been enabled. (Dmitry) - Use i2c_master_send() instead of open-coding a single-message i2c_transfer(). (Dmitry) - Drivers may report coordinates outside the declared min/max, so remove the clamping. (Dmitry) - BTN_TOUCH and INPUT_PROP_DIRECT are already set up by input_mt_init_slots(..., INPUT_MT_DIRECT). (Dmitry) - Let the input core track contacts: drop the touch_id/stylus_id bitmaps and the hand-rolled BTN_TOUCH reporting, and sync the frame once per interrupt with input_mt_sync_frame() instead of calling input_sync() per contact event. The controller pushes contacts one by one into the event FIFO and only resends the ones that changed, so INPUT_MT_DROP_UNUSED is wrong here and is dropped as well. (Dmitry) - Restore the FTS4 interrupts accidentally dropped by introduction of FTS5. - mode-switch-gpios isn't required with stmfts5. Some designs, such as Xiaomi Mi 8, has no such GPIO connected and is limited to AP mode. - Nit: updated example to use interrupts-extended. - Nit: (maximum x/y coordinate reported + 1), corrected example. - Link to v4: https://lore.kernel.org/r/[email protected] Changes in v4: - Wrap everything below enabling the supplies into stmfts_configure() to avoid bunch of gotos to power off on error (Dmitry T.) - Finished chip specific ops and removed is_fts5. (Dmitry T.) - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - s/touchscreen_pins/touchscreen_irq_n. (Konrad) - Use interrupts-extended. (Konrad) - Fixed rebase conflict against 8665ceb926ec ("Input: stmfts - use guard notation when acquiring mutex") - Rename switch-gpios to mode-switch-gpios. - Do not define properties in if:then: branches. (Krzysztof) - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Fix typo in the binding s/switch-gpio/switch-gpios/. - Deduplacate allOf. (Rob yamllint) - Add missing S-off-by. (Dmitry B.) - Dropped irq-gpios as it's not needed. (Konrad) - Correct x and y touchscreen area size. (Konrad) - Correct reset introduction commit description. (Krzysztof) - Partially implemented chip specific ops. (Dmitry T.) - Separeted license naming cleanup into separate commit (Dmitry T.) - Link to v1: https://lore.kernel.org/r/[email protected] To: Dmitry Torokhov <[email protected]> To: Maxime Coquelin <[email protected]> To: Alexandre Torgue <[email protected]> To: Petr Hodina <[email protected]> To: David Heidelberg <[email protected]> To: Rob Herring <[email protected]> To: Krzysztof Kozlowski <[email protected]> To: Conor Dooley <[email protected]> To: Henrik Rydberg <[email protected]> To: Bjorn Andersson <[email protected]> To: Konrad Dybcio <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: Krzysztof Kozlowski <[email protected]> Cc: [email protected] Cc: [email protected] --- David Heidelberg (3): Input: stmfts - wait for controller ready after reset dt-bindings: input: touchscreen: st,stmfts: Introduce STM FTS5 Input: stmfts - support FTS5 Petr Hodina (1): arm64: dts: qcom: sdm845-google: Add STM FTS touchscreen support .../bindings/input/touchscreen/st,stmfts.yaml | 29 +- .../arm64/boot/dts/qcom/sdm845-google-blueline.dts | 19 +- arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 2 +- drivers/input/touchscreen/stmfts.c | 438 ++++++++++++++++++--- 4 files changed, 429 insertions(+), 59 deletions(-) --- base-commit: 7079a12d7506b07fb53b54a664bfad5fa9b16d70 change-id: 20260214-stmfts5-b47311fbd732 Best regards, -- David Heidelberg <[email protected]>

