触摸TP,gt9xx调试分享

2023-10-04 17:26
文章标签 调试 分享 tp gt9xx 触摸

本文主要是介绍触摸TP,gt9xx调试分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

板子:rk3568
平台:android11

1.添加驱动

驱动文件列表:

-rw-rw-r-- 1 vtlk vtlk  17979 1020 14:04  goodix_tool.c
-rw-rw-r-- 1 vtlk vtlk    965 711 16:52 'GT9110P(2020)V71_Config_20201028_170326.cfg'
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  GT9110P_Config_20160217_1526_2048_97.cfg
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  GT9271_Config_20170526.cfg
-rw-rw-r-- 1 vtlk vtlk  87561 1020 15:30  gt9xx.c
-rw-rw-r-- 1 vtlk vtlk   1853 711 16:52  gt9xx_cfg.h
-rw-rw-r-- 1 vtlk vtlk 224220 1020 11:38  gt9xx_firmware.h
-rw-rw-r-- 1 vtlk vtlk  14656 1020 15:13  gt9xx.h
-rw-rw-r-- 1 vtlk vtlk 106042 1020 11:38  gt9xx_update.c
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  HLS-0102-1398V1-1060-GT911_Config_20201204_V66.cfg
-rw-rw-r-- 1 vtlk vtlk    152 1020 15:45  Makefile
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  WGJ10162B_GT9271_1060_Config_20140821_1341110X42.cfg
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  WGJ10162_GT9271_Config_20140820_182456.cfg
-rw-rw-r-- 1 vtlk vtlk   1366 711 16:52  WGJ10187_GT910_Config_20140623_104014_0X41.cfg
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  WGJ10187_GT9271_Config_20140623_104014_0X41.cfg
-rwxrwxr-x 1 vtlk vtlk    929 711 16:52  WGJ89006B_GT911_Config_20140625_085816_0X43.cfg
-rw-rw-r-- 1 vtlk vtlk    929 711 16:52  WGJ89006B_GT9271_Config_20140625_085816_0X41.cfg

首先是设备树配置:

&i2c1 {status = "okay";gt928:gt928@14 {compatible = "goodix,gt9xx";//"goodix,gt928";status = "okay";reg = <0x14>;pinctrl-names = "default";pinctrl-0 = <&gt928_reset_pin &gt928_int_pin>;interrupt-parent = <&gpio0>;interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>;touch-gpio = <&gpio0 RK_PB5 0>;reset-gpio = <&gpio0 RK_PB6 0>;max-x = <800>;max-y = <1280>;tp-size = <928>;};
};

这里的touch-gpio,reset-gpio,max-x,max-y,tp-size是根据probe代码里获取设备树属性来确定的,drivers/input/touchscreen/gt9xx/gt9xx.c中probe部分代码如下:

static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id *id)
{s32 ret = -1;struct goodix_ts_data *ts;u16 version_info;struct device_node *np = client->dev.of_node;enum of_gpio_flags rst_flags, pwr_flags;u32 val;...if (of_property_read_u32(np, "tp-size", &val)) {dev_err(&client->dev, "no max-x defined\n");return -EINVAL;}ts->tp_regulator = devm_regulator_get(&client->dev, "tp");if (IS_ERR(ts->tp_regulator)) {dev_err(&client->dev, "failed to get regulator, %ld\n",PTR_ERR(ts->tp_regulator));return PTR_ERR(ts->tp_regulator);}ret = regulator_enable(ts->tp_regulator);if (ret < 0)GTP_ERROR("failed to enable tp regulator\n");msleep(20);ts->irq_pin = of_get_named_gpio_flags(np, "touch-gpio", 0, (enum of_gpio_flags *)(&ts->irq_flags));ts->rst_pin = of_get_named_gpio_flags(np, "reset-gpio", 0, &rst_flags);ts->pwr_pin = of_get_named_gpio_flags(np, "power-gpio", 0, &pwr_flags);//ts->tp_select_pin = of_get_named_gpio_flags(np, "tp-select-gpio", 0, &tp_select_flags);if (of_property_read_u32(np, "max-x", &val)) {dev_err(&client->dev, "no max-x defined\n");return -EINVAL;}//ts->abs_x_max = val;if (of_property_read_u32(np, "max-y", &val)) {dev_err(&client->dev, "no max-y defined\n");return -EINVAL;}//ts->abs_y_max = val;if (of_property_read_u32(np, "configfile-num", &val)) {ts->cfg_file_num = 0;} else {ts->cfg_file_num = val;}ts->pendown =PEN_RELEASE;ts->client = client;...if (of_property_read_bool(np, "wakeup-source")){device_init_wakeup(&client->dev, 1);enable_irq_wake(ts->irq);}...
}

这里的max-x,max-y是屏幕尺寸对应触摸最大范围;touch-gpio,reset-gpio,分别表示对应的中断检测脚和复位脚;tp-size对应的是正反转的,我这里是直接在gt9xx.c修改全局变量所以tp-size根据需要来配置就可以了;
其次就是在deconfig文件中添加编译

CONFIG_TOUCHSCREEN_GT9XX=y

编译好后download到板子上,成功后的log:

[    1.129428] goodix_ts_probe() start
[    1.129483] Goodix-TS 1-0014: 1-0014 supply tp not found, using dummy regulator
[    1.129565] Goodix-TS 1-0014: Linked as a consumer to regulator.0
[    1.320703] input: goodix-ts as /devices/platform/fe5a0000.i2c/i2c-1/1-0014/input/input1

被注册成输入设备1了
或者使用命令 adb shell getevent 打开输入检测,触摸屏幕会在终端上打印触摸坐标信息,如:

vtlk:~$adb shell getevent
add device 1: /dev/input/event1name:     "goodix-ts"
add device 2: /dev/input/event3name:     "gpio-keys"
add device 3: /dev/input/event0name:     "rk805 pwrkey"
add device 4: /dev/input/event2name:     "adc-keys"
add device 5: /dev/input/event4name:     "rk-headset"
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0035 000002e8
/dev/input/event1: 0003 0036 0000021f
/dev/input/event1: 0003 0030 00000020
/dev/input/event1: 0003 0032 00000020
/dev/input/event1: 0003 0039 00000000
/dev/input/event1: 0000 0002 00000000
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0035 000002e8

2.问题

对应的x和y轴的相反,可以修改drivers/input/touchscreen/gt9xx/gt9xx.c中的全局变量:

static u8 gtp_change_x2y = FALSE;

如果只是x左右相反或折y方向的上下相反可以修改如下量个变量

static u8 gtp_x_reverse = TRUE;
static u8 gtp_y_reverse = TRUE;

这篇关于触摸TP,gt9xx调试分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/2411

相关文章

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5