[PATCH 4/7] Input: edt-ft5x06 - allow a chip specific touch data register

From: Luka Panio

Date: Sat Oct 17 2026 - 10:09:15 EST


The generic FocalTech path reads the touch report starting at register
0x00 and expects the points from register 0x03 onwards. Over SPI the
FT8722 only returns the report when the read starts at register 0x01;
a read from 0x00 returns the static register block instead, the
interrupt is never acknowledged and no further touch events arrive.

Let the chip data select the register the report is read from, keeping
the points at register 0x03.

Signed-off-by: Luka Panio <lukapanio@xxxxxxxxx>
---
drivers/input/touchscreen/edt-ft5x06.c | 6 ++++--
drivers/input/touchscreen/edt-ft5x06.h | 1 +
2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index e57611e48217..7bcc48e07d62 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -149,6 +149,7 @@ struct edt_ft5x06_ts_data {
struct edt_reg_addr reg_addr;
enum edt_ver version;
int (*boot)(struct device *dev, struct gpio_desc *reset_gpio);
+ u8 tdata_reg;
unsigned int crc_errors;
unsigned int header_errors;
};
@@ -1037,8 +1038,8 @@ static void edt_ft5x06_ts_set_tdata_parameters(struct edt_ft5x06_ts_data *tsdata
tsdata->point_len = 4;
crclen = 1;
} else {
- tsdata->tdata_cmd = 0x0;
- tsdata->tdata_offset = 3;
+ tsdata->tdata_cmd = tsdata->tdata_reg;
+ tsdata->tdata_offset = 3 - tsdata->tdata_reg;
tsdata->point_len = 6;
crclen = 0;
}
@@ -1244,6 +1245,7 @@ int edt_ft5x06_probe(struct device *dev, struct regmap *regmap, int irq,

tsdata->max_support_points = chip_data->max_support_points;
tsdata->boot = chip_data->boot;
+ tsdata->tdata_reg = chip_data->tdata_reg;

tsdata->vcc = devm_regulator_get(dev, "vcc");
if (IS_ERR(tsdata->vcc))
diff --git a/drivers/input/touchscreen/edt-ft5x06.h b/drivers/input/touchscreen/edt-ft5x06.h
index 7eaeb562d11f..c55686e288b6 100644
--- a/drivers/input/touchscreen/edt-ft5x06.h
+++ b/drivers/input/touchscreen/edt-ft5x06.h
@@ -18,6 +18,7 @@ struct regmap;

struct edt_ft5x06_chip_data {
int max_support_points;
+ u8 tdata_reg;
int (*boot)(struct device *dev, struct gpio_desc *reset_gpio);
};

--
2.55.0