/************************************************************************
* 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. 【Asp.Net MVC--资料汇总】杂七杂八

    Html.RenderPartial与Html.RenderAction的区别 http://blog.sina.com.cn/s/blog_8278b1800100zkn0.html ASP.NET ...

  2. 【Asp.Net MVC-视频】

    Asp.Net MVC官网网发布的pluralsight视频教学: http://pluralsight.com/training/Player?author=scott-allen&name ...

  3. uva 11181

    直接枚举计算就行: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 22 u ...

  4. Unity3D脚本中文系列教程(五)

    http://dong2008hong.blog.163.com/blog/static/4696882720140302848544/?suggestedreading&wumii Unit ...

  5. 深入理解Tornado——一个异步web服务器

    本人的第一次翻译,转载请注明出处:http://www.cnblogs.com/yiwenshengmei/archive/2011/06/08/understanding_tornado.html原 ...

  6. 【转】12 款优秀的 JavaScript MVC 框架评估

    JavaScript MVC 框架有很多,不同框架适合于不同项目需求.了解各种框架的性能及优劣有利于我们更加快捷的开发.作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目 ...

  7. hdu 1517 A Multiplication Game 博弈论

    思路:求必胜区间和必败区间! 1-9 先手胜 10-2*9后手胜 19-2*9*9先手胜 163-2*2*9*9后手胜 …… 易知右区间按9,2交替出现的,所以每次除以18,直到小于18时就可以直接判 ...

  8. 【POJ3358】

    题目描述: 题意: 就是给定一个a/b,求a/b的结果变成二进制之后的小数.这个小数后面会有一段循环节,只要求输出循环节开始循环的位置和循环长度. 分析: 这题我是这么想的,比如说样例中的1/5,我们 ...

  9. [SharePoint 2013 入门教程 3 ] 排版第一个网站集,网站

    我们创建了一个TEST网站集,如果你觉得太丑,怎么办,我们一起来给它整整容吧. 点击页面--> 编辑页面 我们现在就可以在页面上添加各种部件,进行布局排版.

  10. SQL Server Profiler监控SQL Server性能

    全面掌握SQL Server Profiler 1.       原理与相关概念介绍 SQL Server Profiler,大家已经非常熟悉.常常在性能优化中使用,本文档详细介绍SQL Server ...