[RK3399] 汇顶gt9xx触摸屏在RK原始代码调试

CPU:RK3399git

系统:Android 7.1数组

触摸屏:1024x768   8inch服务器

触摸IC:GT9271微服务

 

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

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

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

 

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

  新代码中通常都默认支持了,不须要额外手动打开ip

CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_GT9XX=y

 

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

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

此时我定义为 ic 的型号

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

 

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

新代码的 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 100644
--- a/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h +++ b/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h @@ -53,4 +53,9 @@ 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_ */

 

 四、在源码中根据 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 100644
--- a/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c +++ b/kernel/drivers/input/touchscreen/gt9xx/gt9xx.c @@ -60,6 +60,7 @@ 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; @@ -1453,6 +1454,11 @@ static s32 gtp_init_panel(struct goodix_ts_data *ts) cfg_info_len[0] = CFG_GROUP_LEN(gtp_dat_7); } +       if (bgt927) { +               send_cfg_buf[0] = gtp_dat_8; +               cfg_info_len[0] = CFG_GROUP_LEN(gtp_dat_8); + } + GTP_DEBUG_FUNC(); GTP_DEBUG("Config Groups\' Lengths: %d, %d, %d, %d, %d, %d", cfg_info_len[0], cfg_info_len[1], cfg_info_len[2], cfg_info_len[3], @@ -2657,6 +2663,12 @@ 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 == 927) { +               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

相关文章
相关标签/搜索