Re: [PATCH] input: add EETI eGalax I2C capacitive multi touch driver.
From: Wanlong Gao <hidden>
Date: 2011-07-29 06:02:27
On 07/29/2011 01:28 PM, Jiejing.Zhang wrote:
Hi Gao, 2011/7/26 Wanlong Gao[off-list ref]quoted
On 07/26/2011 05:25 PM, Zhang Jiejing wrote:quoted
this patch adds EETI eGalax serial multi touch controller driver. EETI eGalax serial touch screen controller is a I2C based multiple capacitive touch screen controller, it can supports 5 touch events maximum. Signed-off-by: Zhang Jiejing<redacted> --- drivers/input/touchscreen/Kconfig | 10 + drivers/input/touchscreen/Makefile | 1 + drivers/input/touchscreen/egalax_ts.c | 314 +++++++++++++++++++++++++++++++++ 3 files changed, 325 insertions(+), 0 deletions(-) create mode 100644 drivers/input/touchscreen/egalax_ts.cquoted
+ + if (down) { + /* since egalax only report one of multi touch event, + * so we need record pervious event with different id + * and report them.*/ + events[id].valid = valid; + events[id].status = down; + events[id].x = x; + events[id].y = y; + + for (i = 0; i< MAX_SUPPORT_POINTS; i++) { + if (!events[i].valid) + continue; + dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", + i, valid, x, y); + + input_report_abs(input_dev, + ABS_MT_TRACKING_ID, i); + input_report_abs(input_dev, + ABS_MT_TOUCH_MAJOR, 1); + input_report_abs(input_dev, + ABS_MT_POSITION_X, events[i].x); + input_report_abs(input_dev, + ABS_MT_POSITION_Y, events[i].y); + input_mt_sync(input_dev); + } + } else { + dev_dbg(&client->dev, "release id:%d\n", id); + events[id].valid = 0; + events[id].status = 0; + input_report_abs(input_dev, ABS_MT_TRACKING_ID, id); + input_event(input_dev, EV_ABS, ABS_MT_TOUCH_MAJOR, 0); + input_mt_sync(input_dev); + } + + input_sync(input_dev);need re-sync here ?it's not re-sync, input_mt_sync() is different from input_sync(), the mt_sync is used to notify a multi touch event is finish. but a input_sync() means a input event is finished. eg, one input event may have many multi touch event. [MT 1, x, y] [mt sync] [MT 2, x, y] [mt sync] [input sync] [MT 1, x, y] [mt sync] [MT 2, x, y] [mt sync] [input sync] ...
case SYN_MT_REPORT: dev->sync = false; Yeah, I see, thanks a lot.
BR, Jiejing
-- Thanks Best Regards Wanlong Gao