RK3288的GTxx触摸屏驱动调试

article/2025/10/24 15:59:07

电容屏是在LCD屏上覆盖一个透明的矩阵键盘,在调试goodix gt9xx系列触控屏的驱动时,会遇到各种问题!
1、linux启动时,触控屏驱动偶尔不能加载固件信息。
2、在使用过程中偶尔不能触发或触发失灵现象。
3、触屏反应缓慢,灵敏度很差。
4、当用户按下时,获取按下的坐标位置不对应!

[RK3288][Android5.1][GT9271]打印dmesg的log信息:

<4>[    1.051266] <<-GTP-INFO->> GTP driver installing...
<4>[    1.051444] <<-GTP-INFO->> GTP Driver Version: V2.4<2014/11/28>
<4>[    1.051460] <<-GTP-INFO->> GTP Driver Built@11:52:24, Sep 25 2018
<4>[    1.051471] <<-GTP-INFO->> GTP I2C Address: 0x5d
<7>[    1.051493] of_get_named_gpio_flags exited with status 229
<7>[    1.051504] of_get_named_gpio_flags exited with status 230
<7>[    1.051516] _gpio_request: gpio-229 (GTP INT IRQ) status -16
<4>[    1.051525] <<-GTP-ERROR->> Failed to request GPIO:229, ERRNO:-16
<4>[    1.051551] <<-GTP-INFO->> Guitar reset
<4>[    1.176930] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177112] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177286] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177457] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177629] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177800] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.177971] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.178141] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.178311] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.178482] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 3223937Khz) is too high!
<4>[    1.179390] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -11! Process reset.
<4>[    1.179402] <<-GTP-INFO->> Guitar reset
<4>[    1.294964] <<-GTP-ERROR->> GTP i2c test failed time 1.
<4>[    1.314658] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.315180] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.315701] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.316221] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.316740] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.317260] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.317778] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.318298] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.318816] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.319335] rockchip_i2c ff660000.i2c: Warning: addr[0x005d] msg[0].scl_rate( = 0Khz) is too low!
<4>[    1.322341] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -11! Process reset.
<4>[    1.322353] <<-GTP-INFO->> Guitar reset
<4>[    1.432720] <<-GTP-ERROR->> GTP i2c test failed time 2.
<4>[    1.459903] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -11! Process reset.
<4>[    1.459917] <<-GTP-INFO->> Guitar reset
<4>[    1.570483] <<-GTP-ERROR->> GTP i2c test failed time 3.
<4>[    1.597673] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -11! Process reset.
<4>[    1.597687] <<-GTP-INFO->> Guitar reset
<4>[    1.708243] <<-GTP-ERROR->> GTP i2c test failed time 4.
<4>[    1.735426] <<-GTP-ERROR->> I2C Read: 0x8047, 1 bytes failed, errcode: -11! Process reset.
<4>[    1.735438] <<-GTP-INFO->> Guitar reset
<4>[    1.846005] <<-GTP-ERROR->> GTP i2c test failed time 5.
<4>[    1.865686] <<-GTP-ERROR->> I2C communication ERROR!
<4>[    1.879869] <<-GTP-ERROR->> I2C Read: 0x8140, 6 bytes failed, errcode: -11! Process reset.
<4>[    1.879882] <<-GTP-INFO->> Guitar reset
<4>[    1.993603] <<-GTP-ERROR->> GTP read version failed
<4>[    1.993616] <<-GTP-ERROR->> Read version failed.
<4>[    2.001135] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -11! Process reset.
<4>[    2.001148] <<-GTP-INFO->> Guitar reset
<4>[    2.119199] <<-GTP-ERROR->> I2C Read: 0x41E4, 1 bytes failed, errcode: -11! Process reset.
<4>[    2.119212] <<-GTP-INFO->> Guitar reset
<4>[    2.229769] <<-GTP-ERROR->> Firmware error, no config sent!
<4>[    2.229781] <<-GTP-ERROR->> GTP init panel failed.
<4>[    2.229814] <<-GTP-INFO->> create proc entry gt9xx_config success
<6>[    2.229973] input: goodix-ts as /devices/virtual/input/input0
<4>[    2.230141] <<-GTP-DEBUG->> [1745]INT trigger type:1
<4>[    2.230155] <<-GTP-ERROR->> Request IRQ failed!ERRNO:-22.
<4>[    2.230176] <<-GTP-INFO->> GTP works in polling mode.
<4>[    2.230190] <<-GTP-INFO->> Applied memory size:2562.
<4>[    2.230202] <<-GTP-INFO->> I2C function: without pre and end cmd!
<4>[    2.230230] <<-GTP-INFO->> Create proc entry success!

1、解决方法:

通过示波器捕捉上升沿信号,增大旁路电容1uF,来增加tr上升沿时间!

 

2、解决方法:

修改dts设备树,触摸屏触发方式0x5d低电平触发

3、解决方法:

//修改I2C传输速率
/*******************************************************
Function:Read data from the i2c slave device.
Input:client:     i2c device.buf[0~1]:   read start address.buf[2~len-1]:   read data buffer.len:    GTP_ADDR_LENGTH + read bytes count
Output:numbers of i2c_msgs to transfer: 2: succeed, otherwise: failed
*********************************************************/
s32 gtp_i2c_read(struct i2c_client *client, u8 *buf, s32 len)
{struct i2c_msg msgs[2];s32 ret=-1;s32 retries = 0;GTP_DEBUG_FUNC();msgs[0].flags = !I2C_M_RD;msgs[0].addr  = client->addr;msgs[0].len   = GTP_ADDR_LENGTH;msgs[0].buf   = &buf[0];msgs[0].scl_rate = 100 * 1000;    // for Rockchip, etc.msgs[1].flags = I2C_M_RD;msgs[1].addr  = client->addr;msgs[1].len   = len - GTP_ADDR_LENGTH;msgs[1].buf   = &buf[GTP_ADDR_LENGTH];msgs[1].scl_rate = 100 * 1000;while(retries < NUMI2C){ret = i2c_transfer(client->adapter, msgs, 2);if(ret == 2)break;retries++;}
...
}/*******************************************************
Function:Write data to the i2c slave device.
Input:client:     i2c device.buf[0~1]:   write start address.buf[2~len-1]:   data bufferlen:    GTP_ADDR_LENGTH + write bytes count
Output:numbers of i2c_msgs to transfer: 1: succeed, otherwise: failed
*********************************************************/
s32 gtp_i2c_write(struct i2c_client *client,u8 *buf,s32 len)
{struct i2c_msg msg;s32 ret = -1;s32 retries = 0;GTP_DEBUG_FUNC();msg.flags = !I2C_M_RD;msg.addr  = client->addr;msg.len   = len;msg.buf   = buf;msg.scl_rate = 100 * 1000;    // for Rockchip, etcwhile(retries < NUMI2C){ret = i2c_transfer(client->adapter, &msg, 1);if (ret == 1)break;retries++;}
...
}//定义GTP_CUSTOM_CFG,上升沿触发
...
#define GTP_MAX_HEIGHT   800
#define GTP_MAX_WIDTH    1280
#define GTP_INT_TRIGGER  0    // 0: Rising 1: Falling
...
config[RESOLUTION_LOC]     = (u8)GTP_MAX_WIDTH;
config[RESOLUTION_LOC + 1] = (u8)(GTP_MAX_WIDTH>>8);
config[RESOLUTION_LOC + 2] = (u8)GTP_MAX_HEIGHT;
config[RESOLUTION_LOC + 3] = (u8)(GTP_MAX_HEIGHT>>8);if (GTP_INT_TRIGGER == 0)  //RISING
{config[TRIGGER_LOC] &= 0xfe; 
}  
...

4、解决方法:

修改设备树配置cfg-group0


http://chatgpt.dhexx.cn/article/rL57ZZR6.shtml

相关文章

C/C++中最快、最简洁的read()快读(卡常数)方法

别人的方法 遇到数据较多的题目时&#xff0c;用scanf或者cin肯定是不够快的。由于getchar()有速度快的特性&#xff0c;有人手打了这样的快速读入函数&#xff1a; inline void read(int& a) {int s 0, w 1;char ch getchar();while (ch < 0 || ch>9){if (ch …

I2C通信

I2C总线是PHLIPS公司推出的一种串行总线&#xff0c;它只有两根双向信号线。一根是数据线SDA&#xff08;serial data I/o&#xff09;&#xff0c;另一根是时钟总线SCL&#xff08;serial clock&#xff09;。 如下图所示&#xff0c;I2C总线上可以挂接多个器件&#xff0c;而…

Linux 文件编程 read函数

read函数的功能是向以打开的文件读取数据。 read函数需要包含头文件 &#xff1a;#include <unistd.h>。 read函数的原型为&#xff1a; ssize_t read(int fd, void *buf, size_t count); 其中&#xff0c;fd为文件描述符&#xff1b;buf表示读出数据缓冲区地址&…

c语言read有什么作用,c语言read函数读到什么结束

linux下c语言编程read()函数的问题 返回-1的时候&#xff0c;要根据错误码来判断原因&#xff0c;请看下面的函数说明&#xff1a; 表头文件 #include 定义函数 ssize_t read(int fd,void * buf ,size_t count); 函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针…

深入了解C read/write函数和cat命令实现

1&#xff0e;文件描述符 文件描述符&#xff08;file descriptor&#xff09;通常是一个小的非负整数&#xff0c;内核用以 标识一个特定进程正在访问的文件。当内核打开一个现有文件或创建一 个新文件时&#xff0c;它都返回一个文件描述符。在读、写文件时&#xff0c;可以使…

极路由最新刷机教程

本文参考&#xff1a;点击打开链接 前提条件 极路由1s、2、3、4&#xff0c;新老版本都可以&#xff0c;固件版本要求9006~9018。但实际上9019以及最新的1.0.xxx也都支持&#xff0c;只不过必须使用ss插件直达页面去操作ss&#xff0c;ss功能完美&#xff0c;就是界面有点简陋。…

极路由(极壹S)HC5661安装OpenWrt及救砖过程

极路由(极壹S)HC5661安装OpenWrt及救砖过程 文章目录 极路由(极壹S)HC5661安装OpenWrt及救砖过程1.免插件离线Root1.1 点击 获取local_token1.2 点击 获取uuid1.3 获取cloud token1.4 开启ssh1.5 永久开启ssh 2.刷不死uboot(breed)2.1 核对路由器型号2.2 下载breed固件2.3 刷入…

ssh登录极路由后台_OpenWrt刷机详细流程(极路由)

要想深入理解某个软件,首先熟悉其安装步骤,亲自感受软件的强大。OpenWrt是Linux的一个发行版,是一个独立的操作系统,主要运行在嵌入式设备中,由于嵌入式硬件种类繁多,并且稍微不慎就可能导致板子变砖,这给开发者带来了很大麻烦。 本篇文章以极路由为例,详细记录了OpenW…

浙大玉泉校区路由器L2TP设置(极路由1s)

我的宿舍里的ZJUWLAN信号太不稳定了&#xff0c;所以打算用有线。房间里只有一个有线口&#xff0c;还离的很远&#xff0c;所以打算连个路由器&#xff0c;然后用wifi连接。 步骤如下&#xff1a; 申请IP 浙江大学学生公寓服务网&#xff1a; http://service.chinasinew.co…

极路由云平台倒闭,路由器免插件离线ROOT方法

极路由云平台停服&#xff0c;离线root方法 免插件离线ROOT方法 访问&#xff1a;http://www.hiwifi.wtf/ 步骤 1. 点击 获取local_token 注意该网页不要关闭&#xff0c;后续获得 cloud token&#xff0c;填入并提交&#xff0c;即可临时获得ssh权限 即&#xff1a;http…

极路由1s HC5661 编程器救砖教程

说明&#xff1a;极1s如果刷错了固件&#xff0c;比如刷了HC5661A之类的&#xff0c;那么&#xff0c;会出现亮不灯的死机情况&#xff0c;这个时候说明固件引导已经刷坏了&#xff0c;只能拆机用编程器救砖或者返厂维修。如果采用编程器的话&#xff0c;因为没有备份&#xff…

极路由器1S,HC5661A刷breed再刷老毛子华硕

极路由器1S-HC5661A刷breed再刷华硕老毛子&#xff0c;再次编辑补充HC5661不带A的教程 特别提醒&#xff1a; 本教程是教授大家如何对【极路由器1S&#xff0c;HC5661A】以及【hc5661不带A的】进行刷机&#xff0c;载入breed并刷入华硕老毛子固件&#xff08;以下简称老毛子&a…

更新极路由器1S,HC5661A刷breed再刷老毛子华硕教程

更新极路由器1S-HC5661A刷breed再刷老毛子老毛子教程&#xff0c;再次编辑附加HC5661不带A的 特别提醒&#xff1a; 2021年1月1日起&#xff0c;极路由器官网www.hiwifi.com域名到期&#xff0c;云平台正式关闭&#xff0c;之前我发布的极1S刷机教程是基于云平台获取root权限的…

极路由刷个人编译的openwrt固件全过程

说明 以下是极1s刷机的整个流程&#xff0c;包括openwrt 极路由固件的编译和升级流程&#xff0c;主要是为了方便发烧友或者开发人员。 准备工作 极壹S(型号HC5661)一台 串口板和串口线(如果是高级玩家) 电脑、网线等软件(vmware、tftpd、linux编译环境) 网络配置 极路由为…

极1s刷Padavan改华硕[N14U N54U]固件

打开极路由的开发者模式 打开开发者模式 登陆极路由的后台管理界面&#xff0c;点击云插件&#xff0c;进入到极路由云插件管理后点击路由信息&#xff0c;然后在最下面点击开通开发者模式&#xff0c;这里需要你放弃极路由的保修以及安装APP等一系列的工作&#xff0c;大家照…

在极路由极1S上使用entware

目录 打开ssh功能安装entware使用感想备份和还原entware注意程序开启启动参考文章 本想在极1S上安装些程序&#xff0c;结果登录ssh后发现系统自带的opkg有限制&#xff0c;即使更改为openWRT的源也不能安装&#xff0c;说各种不兼容。于是打算装entware。 entware是面向 Linux…

Drcom下如何使用路由器上校园网并开启WIFI(以广东工业大学、极路由1S HC5661A为例)

免责声明&#xff1a; 在根据本教程进行实际操作时&#xff0c;如因您操作失误导致出现的一切意外&#xff0c;包括但不限于路由器变砖、故障、数据丢失等情况&#xff0c;概不负责&#xff1b;该技术仅供学习交流&#xff0c;请勿将此技术应用于任何商业行为&#xff0c;所产生…

极路由1S HC5661A 刷入不死u-boot(breed)加刷潘多拉固件教程

原文来自&#xff1a;新版极路由1S&#xff08;HC5661A&#xff09;刷潘多拉加SS配置教程 不死uboot(breed)如何使用 下文是以原文为基础&#xff0c;更详细也更适合小白的整合版。 注意&#xff1a;本贴是新版的白盒极路由1S&#xff08;HC5661A&#xff09;教程&#xff…

极路由s1有wds_极路由1、1s等机型刷OpenWrt--成为真正的极客

0x00&#xff1a;我为什么买极路由 买极路由的时候&#xff0c;他们说这是个给极客打造的智能路由&#xff0c;一开始还因为国际版&#xff0c;被gov直接请去喝茶了。 当时觉得&#xff0c;这玩意能给APPStore加速&#xff0c;还能屏蔽广告&#xff0c;简直NB。那时候也没啥钱&…

极路由1S 开启临时ssh 并刷breed成功

手上有一台别人给的 极路由1s&#xff0c;刷的是不知名版本的openwrt版本&#xff0c;也无法远程ssh&#xff0c;也就无法刷新的固件玩玩。 以前没接触过软路由和路由系统&#xff0c;找了很多资料&#xff0c;都没法正常获取ssh权限。 折腾了一两天&#xff0c;结果发现我刷的…