CPU:RK3399

系统:Android 7.1

IC:FT5406

focaltech(敦泰)触摸屏也是比较常用的,但是相对汇顶,就比较少用

RK的源码中虽然有 focaltech 的代码,但没有调试过,一般都会用供应商提供的代码

供应商会提供一个名为 focaltech_touch 的文件夹,里面包括触屏所有代码

我们要做的就是将代码移植到 kernel 中,编译烧录

1、将文件加拷贝到 kernel/drivers/input/touchscreen/ 目录下

2、修改 touchscreen 目录下的 Kconfig 文件,在最后一行的 endif 前加一行

source "drivers/input/touchscreen/focaltech/Kconfig"

3、修改 touchscreen 目录下的 Makefile 文件,在最后一行添加

obj-$(CONFIG_TOUCHSCREEN_FTS)        += focaltech_touch/

4、修改 rockchip_defconfig 文件,将代码加入编译,相当于修改 .config 文件

CONFIG_TOUCHSCREEN_FTS=y

5、在 dts 中添加设备,需要找到对应的 i2c

&i2c4 {
status = "okay";
i2c-scl-rising-time-ns = <>;
i2c-scl-falling-time-ns = <>;
clock-frequency = <>; focaltech: focaltech@ {
compatible = "focaltech,fts";
reg = <0x38>;
focaltech,reset-gpio = <&gpio1 GPIO_ACTIVE_LOW>;
focaltech,irq-gpio = <&gpio1 IRQ_TYPE_LEVEL_LOW>;
focaltech,max-touch-number = <>;
focaltech,display-coords = < >;
tp-supply = <&vcc3v0_tp>; focaltech,have-key;
focaltech,key-number = <>;
focaltech,keys = < >;
focaltech,key-y-coord = <>;
focaltech,key-x-coords = < >;
};
};

FT5406设备地址:0x70,dts 中需要右移一位,等于除以2,实际为 0x38

focaltech,reset-gpio:复位引脚

focaltech,irq-gpio:中断引脚

focaltech,max-touch-numbe:IC 支持的最大触摸点数

文件 focaltech_core.h 中的宏 FTS_MAX_POINTS_SUPPORT 与此值保持一致,FTS_MAX_POINTS_SUPPORT 过大,虽然使用中不影响,但是测试多点触控会显示无效的触控点

display-coords:设置触摸屏的分辨率

focaltech,have-key:是否有触摸按键,有的话需要定义此行,无触摸按键屏蔽

focaltech,key-number:触摸按键个数

focaltech,keys:每个按键对应的按键值

focaltech,key-y-coord:触摸按键的 y 坐标

focaltech,key-x-coords:触摸按键的 x 坐标

此时就移植完毕,下面是调试过程中遇到的问题

1、读取的 chip id 匹配失败

[FTP]TP not ready, read:0x55aa

需要在 focaltech_common.h 的 FTS_CHIP_TYPE_MAPPING 中添加,具体需要咨询供应商

#define FTS_CHIP_TYPE_MAPPING { \
{0x01, 0x58, 0x22, 0x58, 0x22, 0x00, 0x00, 0x58, 0x2C}, \
{0x02, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x79, 0x03}, \
}

添加后还是同样的问题,id 的高位匹配成功,低位匹配失败,

[FTP]TP not ready, read:0x55ff

原因是代码太旧,要么更新代码,要么删除低位匹配

供应商建议取消低位匹配,并将 focaltech_config.h 中 FTS_AUTO_UPGRADE_EN 设置为 0

if (VALID == fw_valid) {
  if (id_h == ctype[i].chip_idh)
break;
} else {
  if ((id_h == ctype[i].rom_idh)
|| (id_h == ctype[i].pb_idh)
|| ((id_h == ctype[i].bl_idh) && (id_l == ctype[i].bl_idl)))
break;
}

2、开机后触摸屏可以正常使用,但是休眠唤醒后,触摸无效

检查 reset 脚配置正确,并且 reset 脚没有开路

将 focaltech_config.h 文件中 FTS_POWER_SOURCE_CUST_EN 设置为 0,测试还是不行

将 suspend 函数中设置 ic 休眠寄存器的部分屏蔽掉,唤醒后触摸正常,此时确认唤醒时复位失败

ret = fts_i2c_write_reg(ts_data->client, FTS_REG_POWER_MODE, FTS_REG_POWER_MODE_SLEEP_VALUE);
if (ret < )
FTS_ERROR("set TP to sleep mode fail, ret=%d", ret);

用示波器测试唤醒时 reset 引脚,发现休眠和唤醒一直是高电平

查看代码,发现 resume 函数中复位函数被屏蔽了,取消屏蔽就正常了

fts_reset_proc();

RK3399 focaltech敦泰触摸屏移植调试的更多相关文章

  1. RK3288 GT触摸屏移植调试

    CPU:RK3288 系统:Android 5.1 IC:GT911 1.在 menuconfig 或者 rockchip_defconfig 中支持触摸屏.具体用哪种方式需要结合编译方法. 按照瑞芯 ...

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

    CPU:RK3399 系统:Android 7.1 触摸屏:1024x768   8inch 触摸IC:GT9271 基于RK3399,从瑞芯微服务器更新到最新的 Android 7.1 代码中,瑞芯 ...

  3. RK3399 4G模块移远EC20移植调试

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/11266330.html CPU:RK3399 系统:Android 7.1 1.通过串口打印或者adb获取 ...

  4. android TP驱动移植调试笔记(转)

    1. 添加I2C 设备 TP 一般采用的是I2C 作为数据和命令接口,所以TP 驱动也可以归类为I2C 驱动.TP驱动的主要逻辑不在这里,但是了解了Linux 的I2C 体系架构,就可以对整个驱动流程 ...

  5. 敦泰FT6X06单层自容调屏

    总的概括来说,自电容调屏在配置好通道个数和顺序后,只需调整AFE相关的设置参数使各通道的Raw Data和CI值符合定义的标准即可.– AFE是模拟前端的缩写-Analog Front End• Ra ...

  6. 触摸屏 adb调试

    1.adb shell cat /proc/kmsg 这条命令肯定是要放在第一位的,可以打印内核信息,对应于驱动程序中的printk语句. 如果出现以下提示,说明权限不够,可以通过adb root获取 ...

  7. Android触摸屏配置调试

    前几天搞乐蛙时,进入后是鼠标模式,好坑爹的模式有木有~~ 但是大蛋给出了解决方法,我不怕不怕啦~让我们向大牛致敬!!! 首先输入Command查看你的input配置~ adb shell dumpsy ...

  8. Qualcomm平台camera调试移植入门

    1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略:在kernel中实现se ...

  9. Tslib的移植【转】

    转自:http://www.cnblogs.com/uvsjoh/archive/2011/08/25/2152947.html移植Tslib 1 下载源码tslib-x.x.tar.gz 2 解压, ...

随机推荐

  1. stm32 FSMC-外扩SRAM IS62WV51216

    引脚定义 FSMC配置步骤 1.使能对应引脚GPIO时钟 2.配置GPIO引脚模式 3.使能FSMC时钟 4.FSMC初始化 5.存储器块使能 举例 #define Bank1_SRAM3_ADDR ...

  2. kali linux Desktop Environemt types and kali linux install virualbox

    1.we know the kali linux desktop environmet can also be costomized ,Desktop environmet can use GNOME ...

  3. 在Linux中安装适用于arm64位的nodejs

    # 安装适用于arm64位的nodejs runtime v10.16.3 mkdir /runtimes cd /runtimes wget https://nodejs.org/dist/v10. ...

  4. zookeeper服务【-】windows安装与liunx安装

    windows安装zookeeper-3.4.14 https://www.apache.org/dyn/closer.cgi/zookeeper/ [zookeeper下载地址] 1.开启服务之前需 ...

  5. find 查找文件的命令

    find顾名思义就是查找,Linux下find命令提供相当多的查找条件,可以在众多文件或目录下查找你想要的任何文件或目录. 语法: find filename 我当前目录下有aaa.txt和bbb.t ...

  6. .NET Core、EF、Dapper、MySQL 多种方式实现数据库操作(动态注册实体类)

    目录 前言 一.技术选型 二.遇到的坑 2.1..NET Core 下 EF 的问题 2.2.数据库实体类的注册 切记坑 前言 最近在学习.研究 .NET Core 方面的知识,动手搭建了一些小的 D ...

  7. php版网站站打包程序【配合webshell】(原创)

    因为大马只能下载一些单文件,无法下载文件夹里的文件,所以花费一些时间写了一个PHP脚本,打包全站数据,在此分享!切勿做违法事情! 使用方法: 1.将该程序上传到网站的目录下,如/zip.php : 2 ...

  8. mysql官方下载安装教程(centos)

    Linux下Mysql 5.6.30 tar包安装 (2016-04-27 22:45:39) 转载▼ 环境:centos 6.4 x64 先下载mysql安装包 打开 http://dev.mysq ...

  9. JavaScript 廖

    =============== JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中 ======注释 // 以双斜杠开头直到行末 ...

  10. Visual Studio Code IDE开发插件配置

    [PHP通用集成环境] PHP Extension Pack #PHP拓展包,PHP开发最重要的拓展 PHP Intelephense #PHP自动补全工具 PHP IntelliSense #PHP ...