CPU:RK3399

系统:Android 7.1

触摸屏:1024x768   8inch

触摸IC:GT9271

基于RK3399,从瑞芯微服务器更新到最新的 Android 7.1 代码中,瑞芯微已经将汇顶触摸屏的代码做了一些改动,与汇顶官方提供的不一致。

初步来看,瑞芯微更改后的代码,为开发者提供了更多的便利。

比如:x/y坐标反了,x、y坐标镜像了,这些问题开发者就可以解决,不用再联系 FAE 修改配置文件。

1、将 gt9xx 文件夹添加到编译中,修改 rockchip_defconfig 文件,或者在 kernel 中执行 make menuconfig 指令都可以

  新代码中一般都默认支持了,不需要额外手动打开

CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_GT9XX=y

2、在 dts 文件中根据硬件原理图修改触屏参数

"tp-size” 这个参数表面看是 tp 的尺寸,实际好像是可以随意定义,在代码中只是通过这个参数来选择配置信息和触摸调整。

此时我定义为 ic 的型号

&i2c4 {
status = "okay";
i2c-scl-rising-time-ns = <>;
i2c-scl-falling-time-ns = <>;
clock-frequency = <>; gt9xx: gt9xx@ {
compatible = "goodix,gt9xx";
// tp ic设备地址
reg = <0x14>;
// tp 中断脚和复位脚
touch-gpio = <&gpio1 IRQ_TYPE_LEVEL_LOW>;
reset-gpio = <&gpio1 GPIO_ACTIVE_HIGH>;
// tp 分辨率
max-x = <>;
max-y = <>;
// tp 尺寸
tp-size = <>;
// tp 电压
tp-supply = <&vcc3v0_tp>;
};
};

3、添加触摸屏的配置信息参数

新代码的 gt9xx.cfg.h 中按照 tp 的尺寸定义了一些数组,数组中将配置文件包含进来即可,不用再将参数拷贝出来,放到指定数组中

如果有尺寸和分辨率合适的就可以直接用,或者只修改数组中包含的配置文件即可

目前调试的 tp 没有合适的数组,现在就开始按照规则创建配置信息数组

FAE 提供的配置文件 GT9271_Config_20190827.cfg 也需要拷贝到当前目录,文件名自己随意定义

diff --git a/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h b/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h
index c667948..2d81563
--- a/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h
+++ b/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h
@@ -, +, @@ u8 gtp_dat_7[] = {
#include "WGJ10187_GT910_Config_20140623_104014_0X41.cfg"
}; +u8 gtp_dat_8[] = {
+ /* <1024, 768> 8.0 */
+ #include "GT9271_Config_20190827.cfg"
+};
+
#endif /* _GOODIX_GT9XX_CFG_H_ */

4、在源码中根据 tp-size 设置 tp 方向是否需要镜像、切换,还有需要使用的配置参数

如果 bgt927 设置为 TRUE,其他的 bgtxxx 都要设置 FALSE

开始调试时,下面三个参数都设置为 FALSE,然后根据 bgt927 选择配置参数,编译烧录后根据实际现象再调整下面三个参数

gtp_change-x2y:x、y交换方向

gtp_x_reverse:x 方向坐标镜像

gtp_y_reverse:y 方向左边镜像

diff --git a/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c b/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c
index 6db7e39..f23c4af
--- a/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c
+++ b/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c
@@ -, +, @@ static u8 m89or101 = TRUE;
static u8 bgt911 = FALSE;
static u8 bgt970 = FALSE;
static u8 bgt910 = FALSE;
+static u8 bgt927 = FALSE;
static u8 gtp_change_x2y = TRUE;
static u8 gtp_x_reverse = FALSE;
static u8 gtp_y_reverse = TRUE;
@@ -, +, @@ static s32 gtp_init_panel(struct goodix_ts_data *ts)
cfg_info_len[] = CFG_GROUP_LEN(gtp_dat_7);
} + if (bgt927) {
+ send_cfg_buf[] = gtp_dat_8;
+ cfg_info_len[] = CFG_GROUP_LEN(gtp_dat_8);
+ }
+
GTP_DEBUG_FUNC();
GTP_DEBUG("Config Groups\' Lengths: %d, %d, %d, %d, %d, %d",
cfg_info_len[], cfg_info_len[], cfg_info_len[], cfg_info_len[],
@@ -, +, @@ static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id
gtp_change_x2y = TRUE;
gtp_x_reverse = FALSE;
gtp_y_reverse = TRUE;
+ } else if (val == ) {
+ m89or101 = FALSE;
+ bgt927 = TRUE;
+ gtp_change_x2y = TRUE;
+ gtp_x_reverse = TRUE;
+ gtp_y_reverse = FALSE;
} ts->tp_regulator = devm_regulator_get(&client->dev, "tp");

这是汇顶官方提供的标准代码,有需要的可以自己下载移植

链接:https://pan.baidu.com/s/1aBFIO0L0Edwlplv1T0nm6A
提取码:0uj3

[RK3399] 汇顶gt9xx触摸屏在RK原始代码调试的更多相关文章

  1. RK3399 focaltech敦泰触摸屏移植调试

    CPU:RK3399 系统:Android 7.1 IC:FT5406 focaltech(敦泰)触摸屏也是比较常用的,但是相对汇顶,就比较少用 RK的源码中虽然有 focaltech 的代码,但没有 ...

  2. 汇顶科技&&硬件类笔试题目

    汇顶科技硬件类笔试题目,每年都有变化,但是题目类型都差不多.汇顶科技17年在南京地区大概招了20个左右吧,给的待遇还是不错的,工作地点上海深圳

  3. 汇顶指纹传感器GF919深度解析

    前言: 随着指纹识别技术的日益普遍,其在手机上的应用也得到了广泛关注.作为全球第一款Android正面按压指纹识别手机,魅族MX4 Pro所搭载的国产指纹识别系统可谓是赚足了眼球,这就是由汇顶科技提供 ...

  4. RK平台LCD调试说明【转】

    本文转载自:http://blog.csdn.net/u014770862/article/details/76274951?locationNum=2&fps=1 RK平台LCD调试说明 原 ...

  5. RPC远程过程调用学习之路(一):用最原始代码还原PRC框架

    RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经常使用. rpc的实现方式有很多,可以通 ...

  6. access链接最原始代码,两种

    using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web ...

  7. [置顶] NO.4 使用预处理器进行调试

    <c++ primer>第四版 p190 ************************************************************************* ...

  8. MSM8909的触摸屏驱动导致的熄屏后重新亮屏速度慢的原因!【转】

    转自:https://blog.csdn.net/kk20000/article/details/83041081 使用的汇顶的触摸驱动的时候会重新亮屏速度慢3秒,而在使用另外一个敦泰触摸驱动的时候没 ...

  9. RK3399 Android 7.1 删除repo后编译报错

    CPU:RK3399 系统:Android 7.1 瑞芯微使用的是 repo 来进行代码管理,但我们需要用 git 来管理,所以就删除了 repo,但是编译就报错,如下:Server is alrea ...

随机推荐

  1. js循环修改数组属性key值

    var keyMap = { deviceUid: "id", deviceType: "typeName", deviceCode: "code&q ...

  2. Linux查找文件之Find命令

    Linux系统文件中常用属性包括以下内容:名称,大小,权限,属主,属组,修改时间,访问时间等.在庞大的Linux系统中查询文件,需要借助查找工具来实现,依此可以查询相同或指定属性的文件,本文所讲的查询 ...

  3. How to change SAPABAP1 schema password In HANA

    Symptom How to change SAPABAP1 schema password Environment HANA 1.x HANA 2.x Resolution Shutdown the ...

  4. 高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

    HashMap.CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构.原理.扩容机制深入谈过hashmap的实现原理以及在JDK 1. ...

  5. LNMP环境中的数据库迁移为独立的服务器

    环境: centos 6.5 ip:192.168.0.118  nginx.php.mysql centos 6.5 ip:192.168.0.117 mysql 现在我们需要把数据库迁移到192. ...

  6. javascript_06-控制流程

    流程控制 程序的三种基本结构 顺序结构 选择结构 循环结构 判断语句 if 语法: if(condition){ //todo }else if{ //todo }else{ //todo } var ...

  7. Android笔记(二十一) Android中的Adapter

    Android中有一些View是包含多个元素的,例如ListView,GridView等,为了给View的每一个元素都设置数据,就需要Adapter了. 常用的Adapter包括ArrayAdapte ...

  8. 解析Linux中LVM与磁盘配额

    LVM 逻辑卷管理 LVM 概述 LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上.文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,因此 ...

  9. django工作原理简介

    django工作原理简介 先简单的介绍一下django的工作原理,其中还会涉及到Middleware(中间件,包括request, view, exception, response),URLConf ...

  10. AD19新功能之交互式等长

    多信号线等长 选中需要等长的信号线: 选择“Interaction Length Tuning”命令,然后在网络线上点击一下,然后 tab 键暂停: 在Properties面板中,修改Source部分 ...