赛普拉斯触摸驱动修改办法(imx6 Linux)
小发光项目硬件部分遗留的嵌入式触摸调试笔记,记录飞凌 imx6 平台(USB2IIC_CTP_CONTROL 方案)赛普拉斯电容触摸屏的一个驱动修复方法。
适用背景
- 平台:飞凌 OKMX6Q-C / OKMX6DL-C 核心板,Linux 内核
- 触摸方案:赛普拉斯(Cypress)电容触摸,通过 USB2IIC 桥接,内核走
usb2iic_ctp_control路径 - 问题症状:多点触摸事件不上报/事件序列不闭合(隐含,从修改点推断)
修改步骤
-
先打上官方补丁
dont_register_mousedev_for_USB2IIC_CTP_CONTROL.patch(禁止为 USB2IIC 触摸注册 mousedev,避免事件被 mousedev 截走) -
编辑内核源码
drivers/hid/hid-multitouch.c -
找到
static void mt_emit_event(struct mt_device *td, struct input_dev *input)函数 -
在函数体倒数第二行
input_sync(input);之前插入一行:input_mt_sync(input); -
重新编译内核,生成镜像烧写
原理要点
input_mt_sync() 上报 MT_SYNPT 同步标记,声明”这一组触摸点属于同一帧”。缺少它时,内核 input 子系统无法正确分帧多点数据,用户态(如 Android 的 InputReader)可能丢点或粘连。input_sync() 只是帧结束标记,两者不能互相替代。
关联
- 所属项目:微流控化学发光免疫分析仪 小发光硬件部分
- 平台资料:飞凌嵌入式OKMX6DL-Q-C-Linux-Android模块支持列表