ELAN-XD7-TP移植总结

一:添加A13专用操作函数

二:修改配置文件,修改触摸屏的名字,IIC设备地址。

三:修改模块加载函数为A13的模式

四:在i2c_driver结构中填充address_listclass成员

五:修改probe函数

修改注册中断的函数elan_ktf2k_ts_register_interrupt修改如下

1)设置中断模型

err = ctp_set_irq_mode("ctp_para", "ctp_int_port",CTP_IRQ_MODE);

2)注册中断函数里修改中断号和触发方式

err =  request_irq(SW_INT_IRQNO_PIO, elan_ktf2k_ts_irq_handler,

                    IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING |        

                    IRQF_SHARED, client->name, ts);      

六:修改代码里面所有使用到中断号的地方,都改为SW_INT_IRQNO_PIO  

 

七:修改中断处理程序

下面的程序


修改为:


八:完成上面的修改之后把驱动加载进系统,发现没有触摸屏幕一直有中断发生。

检查串口打印的信息是 Int poll failed!,对中断IO口的操作不正确。

 

对中断IO的读取状态操作如下

gpio_get_value(ts->intr_gpio);修改为 ctp_ops.get_pendown_state();此函数是A13专用的读取中断引脚状态的函数。

 

它的返回值:

 return value:

 *             return PRESS_DOWN: if down

 *             return FREE_UP: if up,

 *             return 0: do not need process, equal free up.

 

 

最后修改为:





  把gpio_get_value(ts->intr_gpio);修改为 ctp_ops.get_pendown_state()

此函数是A13专用的读取中断引脚状态的函数。

 

它的返回值:

 return value:

 *             return PRESS_DOWN: if down

 *             return FREE_UP: if up,

 *             return 0: do not need process, equal free up.

 

 

最后修改为:



0:表示按下?

1:表示松开?


  这样做取决于这个函数__elan_ktf2k_ts_poll的返回值,因为它返回不是0

的话就会给调用它的函数返回了错误码。




返回了错误码之后__hello_packet_handler函数中就打印Int poll failed!



九:把所有的gpio的操作函数,改成A13专用的gpio操作函数。

 

十:处理报点

1)此触摸屏支持2个手指触摸

   上报事件处理代码中去掉或者注释5个和10个手指触摸相关的代码。

2)上报触摸点数问题

   触摸的数据被保存在一个全局的buf数组里面。

   其中buf[0]是表示触摸屏支持的是2个手指或者是5个,10个。其中值为0x5a的是支持2个手指的。

   Buf[1], Buf[2], Buf[3],保存的是第一个手指触摸的数据

   Buf[4], Buf[5], Buf[6],保存的是第二个手指触摸的数据

   Buf[7] ID

 

3)X,Y坐标和XY值如果翻转处理如下

对读出的XY坐标信息的处理:

x = ((x*800)/Y_RESOLUTION);

y = ((y*600)/X_RESOLUTION);

处理X,Y坐标的翻转:

调换elan_ktf2k_ts_parse_xy(&buf[idx], &y, &x); 函数的实参顺序

处理XY坐标值的大小翻转:

X = ELAN_TS_Y_MAX -x;

y = ELAN_TS_Y_MAX - y;

 

 

 

 

 

 

十:添加休眠唤醒机制

1实现Androidearly_suspendlate_resume机制函数,在probe函数里面注册




2:实现外设的suspendresume



问题:休眠之后,电源是被切断的,使用厂家给的resume驱动代码会出现以下错误


源码如下:




修改elan_ktf2k_ts_resume为:








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑吧撸码兄弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值