MTK-TP(触屏)解读一

  MTK中的TP代码结构并不复杂,相比于其他的系统更为的简单些。它使用的是input子系统,通过该系统来上报触摸按键。

  首先我们来看看TP的文件夹下的各代码文件的功能。

 

文件名

具体功能

关系文件

tpd.h

一些宏和extern 函数,外部使用

Mtk_tpd.c

tpd_button.c

关于实体按键的定义

 

Tpd_calibrate.c

矫准,比如偏移,可能是MTK以前做电阻屏留下的架构

 

Tpd_calibrate.h

矫准,一些宏和数据结构

 

Tpd_debug.c

一些函数用于debug信息

 

Tpd_debug.h

一些dubug信息和函数申明

 

Tpd_default.c

函数似乎为完成,函数只有一个

 

Tpd_default.h

似乎未完成

 

Tpd_init.c

空文件夹

 

Tpd_misc.c

导出一些符号,基本都是切换模式函数

 

Tpd_setting.c

传些参数至上层应用

 

MTK_tpd.c

关键代码区

 

met_ftrace_touch.h

Ftrace工具,用来代码内追踪运行情况

 

以上代码文件中较为重要的就是mtk_tpd.c,故重点分析该文件。

         在此会有以下几个关键的点:

         1.mtk_tpd.c中的函数运行流程。

         2.mtk_tpd.c中的input系统。

         3.注册i2C

         4.tpd_driver_add函数

         5.LDO芯片设置

         6.通过设备数或者其他方式获取RST,EINT引脚号

         7.通过设备节点获得中断,并请求一个中断号,和注册中断handle

         8.运行线程开启

         9.中断处理函数,唤醒线程,并上报键值

在此,我将这几个分为一些几部分:

一、注册MTK下的TP框架,与建立I2C框架。

二、在probe函数中完成相应电源,设备数,硬件中断,GPIO等设置。

三、建立一个上报框架分为如下:1)开启一个线程2)申请一个中断irq来绑定硬件中断触发3)irq_handle中唤醒work 4)work在唤醒wait事件5)开启的线程等到wait事件执行上报关键代码。,否则睡眠。

四、填充关键的TP上报代码(input系统上报)。

1.mtk_tpd.c中的函数运行流程。
mtk_tpd.c中,我们最先查看init函数,也就是module添加。

 1 static int tpd_remove(struct platform_device *pdev)
 2 {
 3     input_unregister_device(tpd->dev);
 4     return 0;
 5 }
 6 
 7 /* called when loaded into kernel */
 8 static int __init tpd_device_init(void)
 9 {
10     TPD_DEBUG("MediaTek touch panel driver init\n");
11     if (platform_driver_register(&tpd_driver) != 0) {
12         TPD_DMESG("unable to register touch panel driver.\n");
13         
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值