/************************************************************************
* 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. Tern Server Timeout

  2. 【BZOJ】【3196】Tyvj 1730 二逼平衡树

    树套树 Orz zyf 学(co)习(py)了一下树套树的写法,嗯……就是线段树套平衡树. 具体实现思路就是:外部查询用的都是线段树,查询内部自己调用平衡树的操作. 抄抄代码有助理解= = 八中挂了… ...

  3. sigleSchool 存储过程例1

    CREATE OR REPLACE PROCEDURE SINGLSCHOOL( PICIID IN VARCHAR2, SCHOOLID IN NUMBER, SCHETYPE IN number, ...

  4. DataGridView之行的展开与收缩

    很多数据都有父节点与子节点,我们希望单击父节点的时候可以展开父节点下的子节点数据. 比如一个医院科室表,有父科室与子科室,点击父科室后,在父科室下面可以展现该科室下的所有子科室. 我们来说一下在Dat ...

  5. Open multiple Eclipse workspaces on the Mac

    This seems to be the supported native method in OS X: cd /Applications/eclipse/ open -n Eclipse.app ...

  6. HDOJ 1856 More is better

    转自:wutianqi http://www.wutianqi.com/?p=1069 tag:并查集 #include <iostream> using namespace std; # ...

  7. jQuery经典面试题及答案精选[转载]

    问题:jQuery的美元符号$有什么作用? 回答:其实美元符号$只是”jQuery”的别名,它是jQuery的选择器,如下代码: $(document).ready(function(){ }); 当 ...

  8. lintcode :Valid Palindrome 有效回文串

    题目: 有效回文串 给定一个字符串,判断其是否为一个回文串.只包含字母和数字,忽略大小写. 样例 "A man, a plan, a canal: Panama" 是一个回文. & ...

  9. 【mongoDB中级篇②】索引与expain

    索引的操作 数据库百分之八十的工作基本上都是查询,而索引能帮我们更快的查询到想要的数据.但是其降低了数据的写入速度,所以要权衡常用的查询字段,不必在太多字段上建立索引. 在mongoDB中默认是用bt ...

  10. StringBuffer的用法

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...