[DESCRIPTION]
SW版本从KK升级到L(Kernel-3.4升级到Kernel-3.10)后出现多点触摸时,driver中上报的坐标正常,打开“开发人员选项”中的“指针位置”和“显示触摸”可以明显看到第五点坐标异常。
用adb getevent可以看到数据异常时会多出来一个SYN_REPORT为1的事件(正常情况下只会上报SYN_REPORT为0的事件),如下:
EV_SYN SYN_REPORT 00000001
[ROOT CAUSE]
Kernel-3.10的input.c中对一次上传的Input event数据包大小有限制,会根据Input device的注册属性动态计算数据包的大小。
[SOLUTION]
在mtk-tpd.c的input_register_device()之前设置
input_set_abs_params(tpd->dev, ABS_MT_TRACKING_ID, 0, 10, 0, 0);