1、 修改kernel-3.18\arch\arm64\configs\len6797_6m_n_debug_defconfig、6797_6m_n_defconfig  
        CONFIG_INPUT_TOUCHSCREEN=y  
        CONFIG_TOUCHSCREEN_MTK=y  
        #CONFIG_TOUCHSCREEN_MTK_FT6X36=y  
        CONFIG_TOUCHSCREEN_MTK_GT1151=y      //打开指定的tp,关闭其他的

#CONFIG_TOUCHSCREEN_MTK_GSLX680=y

2、device\ivvi\ivvi6797_6m_n

修改device\XXX\ProjectConfig.mk

CUSTOM_KERNEL_TOUCHPANEL = GT1XX        //修改为指定tp

3、把厂家的代码放到kernel-3.18\drivers\input\touchscreen\mediatek\

4、kernel-3.18\drivers\input\touchscreen\mediatek\Kconfig 添加:

if INPUT_TOUCHSCREEN

config TOUCHSCREEN_MTK
tristate "MediaTek Touch Panel Driver"
default n
help
  Say Y here if you have MediaTek touch panel.
  If unsure, say N.
  To compile this dirver as a module, choose M here: the
  module will be called.

source "drivers/input/touchscreen/mediatek/GT1151/Kconfig"

5、 在kernel-3.18\drivers\input\touchscreen\mediatek\Makefile 添加:

obj-$(CONFIG_TOUCHSCREEN_MTK) +=  GT1151/

6、tp常用调试方法:  
    1. adb查看tp型号: -- 从log中查看  
      
    2. 查看tp报点  
        2.1 驱动中有打印的话:  
            cat /proc/kmsg | grep "tpd"  
            cat /proc/kmsg | grep -i "key|power|backlight"   
  
        2.2 可以直接从input设备节点/dev/input/event读取  
            getevent -i  
            getevent -t /dev/input/event5       (event?,用[getevent -i] 查看)  
              
            --  查看到的是原始数据,看不出坐标点,只能看出有无上报  
              
        2.3 查看hal层收到的数据  
       
              
    3. 在tp还不通的时候/frameworks/base/include/ui/KeycodeLabels.h中定义了很多keyevent  
        inut keyevent 3                     //home  
        inut keyevent 4                     //back  
        inut keyevent 26                    //power  
      
    4 检查硬件  
        用万用表测量6个引脚的电压:  
            正常工作电压  休眠电压  
        INT     1.8V        0V  
        RST     1.8V        1.8V  
        VDD     2.8V        2.8V  
        SDA     1.8V        1.8V  
        SCL     1.8V        1.8V  
        GND     0V          0V  
          
        通过[万用表]查看中断脚有无中断 - 实测可以  
        通过[万用表]查看TP的GND是否与主板的GND导通  
        通过[示波器]查看sda有无数据波形  
          
          
二、如何使能tp的log  
    1 GT5668        默认打开    GTP_DEBUG()     由宏控制  
        #define GTP_DEBUG_ON          1 // enable log printed by GTP_DEBUG(...)  
          
    2 ft6xx6_ges    默认关闭    TPD_DEBUG()  
        --  暂时没找到哪边开关  
          
三、虚拟按键  
    1 虚拟按键坐标通常写在dts中,也可能写死在驱动,具体看驱动  
        &touch {  
            tpd-resolution = <720 1280>;      // 分辨率 - 不用这里的,而是用defconfig中的lcm宽与高  
            use-tpd-button = <1>;             // 虚拟按键使能  
            tpd-key-num = <3>;                    // 虚拟按键个数  
            tpd-key-local= <139 172 158 0>;       // 虚拟按键坐标 - 兑换139 与158的位置可以按键对换  
            tpd-key-dim-local = <90 883 100 40 230 883 100 40 370 883 100 40 0 0 0 0>;  
          
    2 通过sys节点读取  
        cat /sys/board_properties/virtualkeys.mtk-tpd   // 获取软件中虚拟按键坐标  
          
    2.1 读取底层TP虚拟安静键值  
        cat proc/kmsg | grep "tpd"  
          
    2.2 读取上层TP虚拟安静键值  
        logcat | grep "keyCode"  
      
    3 从input设备节点/dev/input/event?读取  
        getevent -i  
        getevent -t /dev/input/event5       // 获取tp在内核中通过input上报的数据  
        -----虚拟按键跟tp供用一个input设备  
          
四、tp翻转180度  
    kernel-3.18\drivers\input\touchscreen\mediatek\ft6x36\focaltech_core.c 打开宏:  
      
    #define CONFIG_TPD_ROTATE_180  
      
    驱动中有:(没有可以自己实现)  
    #if defined(CONFIG_TPD_ROTATE_90) || defined(CONFIG_TPD_ROTATE_270) || defined(CONFIG_TPD_ROTATE_180)  
    static void tpd_rotate_180(int *x, int *y)  
    {  
        *y = TPD_RES_Y + 1 - *y;                // TPD_RES_Y -- mtk_tpd.c从defconfig的CONFIG_LCM_HEIGT获得  
        *x = TPD_RES_X + 1 - *x;  
    }  
    #endif  
    static void tpd_down(int x, int y, int p, int id)  
    {  
    #if defined(CONFIG_TPD_ROTATE_180)  
        tpd_rotate_180(&x, &y);  
    #endif  
        ...  
        input_report_abs(tpd->dev, ABS_MT_POSITION_X, x);  
    }  
  
五、相同ic的tp模组做兼容 - 根据读寄存器OxB8,

MTK 驱动开发(28)--6797平台 TP 移植相关推荐

  1. MTK 驱动开发(29)---TP 驱动移植

    对于MTK TP驱动移植一般分为六部分: 1.硬件IO口配置: 2.TP驱动移植: 3.I2C通信: 4.中断触发: 5.数据上报: 6.虚拟按键: 硬件电路: 1.GPIO配置 打开 mediate ...

  2. MTK 驱动开发(30)---Memory 移植

    一.MTK 平台和高通平台在器件选型时都要求选择已经验证过的器件,第一步需要QVL验证 1) 根据硬件原理图和EMMC 和DDR厂家的芯片资料, 确定EMMC 和DDR  64+4,型号如下: EMM ...

  3. MTK 驱动开发(27)---TP 驱动分析

    MTK TP 驱动分析    

  4. MTK 驱动开发(16)---LCM 移植

    对于LCM驱动移植,一般分为三部曲: 1.硬件IO口配置: 2.确保LCM背光能够正常点亮: 3.LCM驱动移植: 硬件电路: 1.GPIO配置 打开 mediatek\dct\DrvGen.exe ...

  5. MTK 驱动开发(40 )---TP乱跳频原因

    触摸屏(TP)乱跳原因总结 导致触摸屏乱跳的原因大概分为5类: (1) 触摸屏硬件通道损坏   (2)触摸屏固件版本太低 (3) 触摸屏工作电压异常   (4) 射频干扰   (5)触摸屏校准异常 硬 ...

  6. MTK 驱动开发(32)---Sensor 移植及调试2

    接续上一节,本文主要介绍驱动部分的客制化 3. Sensor Driver 的客制化 主要涉及三个方面: 1)配置 codegen.dws ---I2C 地址.eint.gpio 2)配置驱动参数 3 ...

  7. MTK 驱动开发(31)---Sensor 移植及调试1

    1.Android sensor 框架描述 1.1.Android 支持的sensor 类型 1.2.Android sensor 系统架构 1.3.HAL 和Driver的工作流程 1.4 sens ...

  8. MTK 驱动开发(31)---Sensor 移植及调试(1)

    1.Android sensor 框架描述 1.1.Android 支持的sensor 类型 1.2.Android sensor 系统架构 1.3.HAL 和Driver的工作流程 1.4 sens ...

  9. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

最新文章

  1. 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
  2. ASIC与FPGA能达到的频率差异巨大是为什么
  3. 2013秋东北计算机在线作业,2013秋奥鹏东北师范大学计算机应用基础第三次在线作业及答案.doc...
  4. 揭秘-选择迅捷PDF转Word转换器的原因
  5. Tomcat 5 5 JNDI Resource 配置
  6. unity DOTS的学习总结之Job System
  7. oracle gather trace,Oracle 12C R2-新特性-新增两个视图:方便查看trace文件和内容
  8. Spring Boot 执行流程
  9. java deadlock oracle_【DEADLOCK】Oracle“死锁”模拟
  10. 汽车用众大牌大屏幕导航仪凯立德地图升级方法
  11. c语言 众数,C语言实现查找一组数中的众数
  12. 打印机 linux 共享文件夹,linux 连接windows打印机
  13. 风控模型开发的特征选择与常用数据源介绍
  14. XV6实验环境的搭建
  15. 程序员的转正述职报告
  16. Windows 7钉子户
  17. 【赠书】熊德意老师的一部不止于技术的神经机器翻译“百科全书”
  18. 从Folding@home项目看GPU通用计算发展
  19. 嵌入式期末大作业——家用智能晾衣杆
  20. 手淘商品详情api接口|淘宝商品详情API接口文档

热门文章

  1. 内核并发控制---原子操作(来自网易)
  2. mint linux更新内核,如何在Ubuntu/Linux Mint中安装最新Linux 5.2.5内核
  3. PSNR和SSIM的matlab源代码,图像质量评价指标之 PSNR 和 SSIM
  4. linux下qt制作日历,课内资源
  5. pip命令安装pygeme后 IDLE import pygame报错
  6. 安装 RabbitMQ
  7. uva11609(组合数学,快速幂)
  8. Postgresql添加/删除触发器示例
  9. Spring Security整合JWT,实现单点登录,So Easy~!
  10. (转)postgresql+postgis空间数据库使用总结