/************************************************************************
* I.MX6 Goodix GT9xx touchscreen driver porting
* 声明:
* 本文主要是记录GT9xx电容Touch移植过程中遇到的一些问题。
*
* 2016-1-27 深圳 南山平山村 曾剑锋
***********************************************************************/ 一、参考文档:
GT9XX驱动移植说明书_for_Android_2014011401.pdf 二、error :
. 出错信息:
. 直接将驱动放在kernel里系统会卡死,出错信息如下:
USB Gadget resume begins
fsl_udc_resume, Wait for wakeup thread finishes
dr_controller_run: udc out low power mode
USB Gadget resume ends
fsl-usb2-udc: bind to driver android_usb
mousedev: PS/ mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
<<-GTP-INFO->> GTP driver installing...
<<-GTP-INFO->> GTP Driver Version: V2.<//>
<<-GTP-INFO->> GTP Driver Built@::, Jan
<<-GTP-INFO->> GTP I2C Address: 0x5d
<<-GTP-INFO->> Guitar reset
<<-GTP-INFO->> Chip Type: GOODIX_GT9
<<-GTP-INFO->> IC Version: 9157_1040
<<-GTP-INFO->> X_MAX: , Y_MAX: , TRIGGER: 0x01
<<-GTP-INFO->> create proc entry gt9xx_config success
input: goodix-ts as /devices/virtual/input/input1
<<-GTP-INFO->> GTP works in interrupt mode.
<<-GTP-INFO->> Applied memory size:.
<<-GTP-INFO->> Applied memory size:.
<<-GTP-INFO->> I2C function: without pre and end cmd!
<<-GTP-INFO->> Create proc entry success!
mtk_tpd: hotknot_device register failed
USB Gadget resume begins
fsl_udc_resume, Wait for wakeup thread finishes
ehci_fsl_bus_suspend begins, Host
ehci_fsl_bus_suspend ends, Host
<系统会卡死在这里,接下来没有任何信息输出>
. 作为模块加入内核,使用久了,系统也会卡死:
root@android:/ # cd /data/local
root@android:/data/local # ls
gt9xxm.ko
tmp
root@android:/data/local # insmod gt9xxm.ko
<<-GTP-INFO->> GTP driver installing...
<<-GTP-INFO->> GTP Driver Version: V2.<//>
<<-GTP-INFO->> GTP Driver Built@::, Jan
<<-GTP-INFO->> GTP I2C Address: 0x5d
<<-GTP-INFO->> Guitar reset
<<-GTP-INFO->> Chip Type: GOODIX_GT9
<<-GTP-INFO->> IC Version: 9157_1040
<<-GTP-INFO->> X_MAX: , Y_MAX: , TRIGGER: 0x01
<<-GTP-INFO->> create proc entry gt9xx_config success
input: goodix-ts as /devices/virtual/input/input1
cpufreq_interactive_input_connect: connect to goodix-ts
<<-GTP-INFO->> GTP works in interrupt mode.
<<-GTP-INFO->> Applied memory size:.
<<-GTP-INFO->> Applied memory size:.
<<-GTP-INFO->> I2C function: without pre and end cmd!
root@android:/data/local # <<-GTP-INFO->> Create proc entry success!
mtk_tpd: hotknot_device register failed
. 解决方法:
. cat gt9xx.h
......
#define HOTKNOT_ENABLE 0 // hotknot module
#define HOTKNOT_BLOCK_RW 0 // block rw operation in hotknot
......
. cat goodix_tool.c
s32 init_wr_node(struct i2c_client *client)
{
......
#if 0
if (misc_register(&hotknot_misc_device))
{
printk("mtk_tpd: hotknot_device register failed\n");
return FAIL;
}
#endif
......
}
. 思路来源:
. 想通过尽可能减少驱动的功能来判断驱动哪里出了问题。
. cat gt9xx.h
......
#define HOTKNOT_ENABLE 1 // hotknot module
#define HOTKNOT_BLOCK_RW 1 // block rw operation in hotknot
......
. 如上所述,不需要该功能,当然我也不知道这是什么功能。
. 改为如下内容:
#define HOTKNOT_ENABLE 0 // hotknot module
#define HOTKNOT_BLOCK_RW 0 // block rw operation in hotknot
. 报错如下:
......
CC drivers/input/touchscreen/gt9xx.o
drivers/input/touchscreen/gt9xx.c: In function 'goodix_ts_suspend':
drivers/input/touchscreen/gt9xx.c::: warning: unused variable 'buf' [-Wunused-variable]
CC drivers/input/touchscreen/gt9xx_update.o
CC drivers/input/touchscreen/goodix_tool.o
drivers/input/touchscreen/goodix_tool.c: In function 'init_wr_node':
drivers/input/touchscreen/goodix_tool.c::: error: 'hotknot_misc_device' undeclared (first use in this function)
drivers/input/touchscreen/goodix_tool.c::: note: each undeclared identifier is reported only once for each function it appears in
drivers/input/touchscreen/goodix_tool.c: At top level:
drivers/input/touchscreen/goodix_tool.c::: warning: 'hotknot_write' defined but not used [-Wunused-function]
drivers/input/touchscreen/goodix_tool.c::: warning: 'hotknot_read' defined but not used [-Wunused-function]
make[]: *** [drivers/input/touchscreen/goodix_tool.o] Error
make[]: *** [drivers/input/touchscreen] Error
make[]: *** [drivers/input] Error
make: *** [drivers] Error
error: make uImage failed.
./remake.sh: : exit: Illegal number: -
. 既然已经禁止了,那么不可能还有hotknot_misc_device设备注册的,也就意味着这个版本的驱动有错。
. 综上所述:可能是我们的kernel不支持hotknot这个功能导致的。 三、error :
. 触摸屏点击有效,但是不准确,TP厂没有给矫正文件,后来FAE确认是由于矫正配置参数的问题。
. 修改gt9xx.h文件:
......
#define GTP_DRIVER_SEND_CFG 1
......
. 配置参数:
#define CTP_CFG_GROUP0 {\
0x46,0xD0,0x02,0x00,0x05,0x0A,0x05,0x40,0x01,0x08,\
0x28,0x0F,0x50,0x32,0x03,0x05,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8A,0x0A,0x0B,\
0x2E,0x30,0x31,0x0D,0x00,0x00,0x00,0x02,0x03,0x1D,\
0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,\
0x00,0x21,0x41,0x94,0xC5,0x02,0x07,0x00,0x00,0x04,\
0x9E,0x23,0x00,0x8D,0x28,0x00,0x80,0x2E,0x00,0x74,\
0x35,0x00,0x69,0x3C,0x00,0x69,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x16,0x14,0x12,0x10,0x0E,0x0C,0x0A,0x08,\
0x06,0x04,0x02,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x16,0x13,0x18,0x12,0x1C,0x10,0x1D,0x0F,\
0x0A,0x1E,0x00,0x24,0x22,0x02,0x21,0x04,0x20,0x06,\
0x1F,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\
0x00,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\
0x9F,0xFF,0xFF,0xFF,0x00,0x01\
}

I.MX6 Goodix GT9xx touchscreen driver porting的更多相关文章

  1. I.MX6 Linux eGTouch TouchScreen porting

    I.MX6 Linux eGTouch TouchScreen porting 一.Download Driver: http://www.eeti.com.tw/drivers_Linux.html ...

  2. I.MX6 bq27441 driver porting

    /************************************************************************** * I.MX6 bq27441 driver p ...

  3. I.MX6 PMU MMPF0100 driver porting

    /************************************************************************** * I.MX6 MMPF0100 driver ...

  4. I.MX6 ar1020 SPI device driver hacking

    /************************************************************************************ * I.MX6 ar1020 ...

  5. I.MX6 Android U-blox miniPCI 4G porting

    /************************************************************************** * I.MX6 Android U-blox m ...

  6. I.MX6 Linux I2C device& driver hacking

    /******************************************************************************************* * I.MX6 ...

  7. [RK3288][Android6.0] 调试笔记 --- Goodix GT9和GT9F区别【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/78341425 Platform: RK3288 OS: Android 6.0 Kernel ...

  8. [RK3399] 汇顶gt9xx触摸屏在RK原始代码调试

    CPU:RK3399 系统:Android 7.1 触摸屏:1024x768   8inch 触摸IC:GT9271 基于RK3399,从瑞芯微服务器更新到最新的 Android 7.1 代码中,瑞芯 ...

  9. gt811 driver

    #include <linux/module.h> #include <linux/i2c.h> #include <linux/platform_device.h> ...

随机推荐

  1. IntelliJ IDEA 比较当前版本文件与历史文件

    前言: 写代码修改后怎样比较与历史文件的区别呢?idea提供了2种比较方式(目前笔者所了解到的) 一.SVN的版本比较 二.当前文件与历史版本比较

  2. EXT心得--并非所有的items配置对象都属于EXT的内置类

    之前我对EXT的items中未指明xtype的配置对象有一个错误的认识--即虽然某个items未指明它下面的某个组件的xtype,但这个组件肯定属性EXT的某个类.然而今天在查看actioncolum ...

  3. BZOJ1692: [Usaco2007 Dec]队列变换

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 594  Solved: 246[Submit][Sta ...

  4. matlab中函数fscanf

    matlab中函数fscanf matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size ...

  5. 【Memcache】下载和安装

    下载: Win7 64bit 系统 下载过过很多版本,都无法安装,最后到这里下载,成功安装: http://blog.couchbase.com/memcached-windows-64-bit-pr ...

  6. oracle sql 性能 优化

    目录[-] (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table ...

  7. 查看 dmp 字符集

    用Oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集.如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式 ...

  8. java poi导出EXCEL xls文件代码

    String _currentPage = request.getParameter("currentPage"); Integer currentPage = 0; if(_cu ...

  9. fedora下缺少autopoint包的解决办法

    编译过程中,报错,缺少autopoint包 然而无论是yum install autopoint 还是yum search autopoint都没有理想的答案 执行yum install gettex ...

  10. 使用tornado让你的请求异步非阻塞

    http://www.dongwm.com/archives/shi-yong-tornadorang-ni-de-qing-qiu-yi-bu-fei-zu-sai/?utm_source=tuic ...