车机以前是用的电阻屏,后来根据需要,添加电容屏,工作完成一段时间了,现回忆移植过程:
供应商有给到android的tp驱动过来
1、把tp的驱动加到kernel/drivers/touchscreen目录下
修改该目录下的Makefile 和kconfig文件,使kernel编译的时候能成功编译到该驱动文件(先配置为驱动模块,方便调试)
2、在kernel/arch/arm/mach_xxx/board_xxx.c中为该设备定义i2c通信和中断、电源控制的端口、注册i2c设备以及设备初始化
3、push 驱动.ko文件到目标系统并挂载该驱动
可以通过lsmod、dmesg监视挂载异常
4、adb shell连接目标设备,getevent监视输入子系统,一切正常的话就有坐标打印输出,硬件方面会tp正常输出中断和i2c信号
如果驱动有问题的话,在驱动里面加入printk打印,通过dmesg监视究竟问题出在哪里。
针对不同大小的屏幕,tp有不同的配置参数,这些参数就是一个数组值,根据自己平台,选择供应商给的资料里面对应的配置参数,替换即可,不然会出现触摸有信号,getevent有数据,但坐标是乱的,或tp有部分getevent没有坐标打印。
网上看有的tp在firmware取值的时候报值不准,给cpu去读这个值有误差,需要调整firmware层,一般tp只有驱动文件,所有的转换都在驱动里面做了,但这种情况,除非供应商有他自己的firmware层来转换坐标,驱动只是简单的设备访问而已。
http://blog.youkuaiyun.com/l627859442/article/details/7633457
http://blog.youkuaiyun.com/fskwypfsk/article/category/1080889
http://blog.youkuaiyun.com/zhang84112635/article/details/8569118