hi:
之前帖子上有描述问题,AM335X的触摸屏有几率出现driver中无法接收到PEN_UP中断,发帖子询问,没有找到原因,我在probe函数中,把IRQENABLE_SET寄存器的PEN_UP_EVENT[9]是能后,每次点触屏幕,现在触摸驱动的irq函数每次都能收到抬起中断,但是还存在一个问题,在代码中,向上层报告抬起状态,是有个判断函数的,如下,逻辑中,只有ADCSTAT寄存器的值为0x10的时候,才会上报触摸抬起事件,现在有些情况下,当抬起中断触发后,ADCSTATE寄存器的值是0x50,也就是说PEN_IRQ0[6]值为1,这个位是用来做什么的?在TRM文档中我没找到相关的描述?为什么我的触摸屏驱动无法上报抬起中断?
if (status & IRQENB_PENUP) {
fsm = ***(ts_dev, REG_ADCFSM);
printk("[huzz]%s:fsm=0x%x\n",__func__,fsm);
if (fsm == ADCFSM_STEPID) {
ts_dev->pen_down = false;
input_report_key(input_dev, BTN_TOUCH, 0);
input_report_abs(input_dev, ABS_PRESSURE, 0);
input_sync(input_dev);
pm_relax(ts_dev->mfd_tscadc->dev);
} else {
ts_dev->pen_down = true;
}
irqclr |= IRQENB_PENUP;
}