zForce红外触屏处理芯片驱动源码有两套,分别为linux&Android、wince系统实现。
我用的是linux系统,应用不是QT实现的,界面都是opengl实现,所以,要自行处理触屏输入控制。
linux的触屏驱动使用了input子系统,前一天已经做了一个基本学习,现在分析一下驱动实现。
硬件接口:
IR触屏使用I2C访问,有数据时,DATAREADY会置低,3.3V供电,PIN10接地。
I2C访问不是一般器件的寄存器式的读写操作,而是基于zForce的通信协议访问。
测试时可以参考zForce的通信协议说明,实际驱动已经实现所有协议内容,不做具体分析。
触屏模块硬件和软件适配修改有:
1. 需要提供一个IRQ,连接DATAREADY
我的板子上用的是GPIO的IRQ,需要初始化GPIO pin mux,输入和中断使能,下降沿触发(以后再具体分析GPIO的驱动架构)
2. 对接I2C3
使用TI的芯片,其linux内核中I2C的驱动使用的是new style驱动模型。
在I2C模块,修改全局变量:
static struct i2c_board_info __initdata ti814x_i2c_boardinfo1[] = {
{
.type = "zforce",
.addr = 0x50,// zForce I2C address
.irq = 200,