CPU:RK3288

系统:Android 5.1

触摸IC:GT911

1、在 menuconfig 或者 rockchip_defconfig 中支持触摸屏。具体用哪种方式需要结合编译方法。

按照瑞芯微提供的编译方式,则修改 rockchip_defconfig,这种方式在make前,需要执行 make rockchip_defconfig,生成 .config 文件。

path:kernel/arch/arm/configs/rockchip_defconfig

  1. CONFIG_INPUT_TOUCHSCREEN=y
  2. CONFIG_TOUCHSCREEN_GT9XX=y

只执行make的话,就要在make menuconfig中修改,保存后生成 .config 文件。

  1. Device Drivers --->
  2. Input device support --->
  3. [*] Touchscreens --->
  4. <*> Goodix touch screen gt9xx support for rockchip based platform

2、修改触摸屏分辨率。

path:kernel/drivers/input/touchscreen/gt9xx/gt9xx.h

  1. // 下面有两种定义分辨率的方式,任选一种
  2. #define GTP_CUSTOM_CFG 1
  3. ... ...
  4. #define GTP_1024X768
  5. ... ...
  6. #if GTP_CUSTOM_CFG
  7. #ifdef GTP_1024X768
  8. #define GTP_MAX_HEIGHT 768
  9. #define GTP_MAX_WIDTH 1024
  10. #else
  11. #define GTP_MAX_HEIGHT 320
  12. #define GTP_MAX_WIDTH 480
  13. #endif
  14. // 触摸屏中断触发信号
  15. #define GTP_INT_TRIGGER 0 // 0: Rising 1: Falling
  16. #else
  17. #define GTP_MAX_HEIGHT 4096
  18. #define GTP_MAX_WIDTH 4096
  19. #define GTP_INT_TRIGGER 1
  20. #endif

3、确认触摸屏Sensor-ID,有下面两种方式

(1)根据硬件配置,需要咨询供应商。

  1. //*************************** PART2:TODO define **********************************
  2. // STEP_1(REQUIRED): Define Configuration Information Group(s)
  3. // Sensor_ID Map:
  4. /* sensor_opt1 sensor_opt2 Sensor_ID
  5. GND GND 0
  6. VDDIO GND 1
  7. NC GND 2
  8. GND NC/300K 3
  9. VDDIO NC/300K 4
  10. NC NC/300K 5
  11. */

(2)内核运行时的log可以看出来

  1. // 获取 sensor_id
  2. ret = gtp_i2c_read_dbl_check(ts->client, GTP_REG_SENSOR_ID, &sensor_id, );
  3. if (SUCCESS == ret) // 获取 sensor_id 成功
  4. {
  5. // sensor_id 超出范围
  6. if (sensor_id >= 0x06)
  7. {
  8. GTP_ERROR("Invalid sensor_id(0x%02X), No Config Sent!", sensor_id);
  9. ts->pnl_init_error = ;
  10. return -;
  11. }
  12. }
  13. else // 获取 sensor_id 失败
  14. {
  15. GTP_ERROR("Failed to get sensor_id, No config sent!");
  16. ts->pnl_init_error = ;
  17. return -;
  18. }
  19. // 成功后打印 sensor_id
  20. GTP_INFO("Sensor_ID: %d", sensor_id);

4、在dts文件中,修改触摸屏的硬件参数。

  1. // i2c接口
  2. &i2c4 {
  3. // 使能
  4. status = "okay";
  5. // 设备地址(记得除二)
  6. ts@5d{
  7. compatible = "goodix,gt9xx";
  8. reg = <0x5d>;
  9. // 复位IO
  10. goodix,rst-gpio = <&gpio7 GPIO_B2 GPIO_ACTIVE_HIGH>;
  11. // 中断IO
  12. goodix,irq-gpio = <&gpio7 GPIO_B1 IRQ_TYPE_LEVEL_LOW>;
  13. pinctrl-names = "default";
  14. // 中断IO默认上拉
  15. pinctrl- = <&gpio7_b1>;
  16. // 触摸屏配置参数,需要供应商提供,group0-group5,根据Sensor-ID决定,若ID=4,则使用goodix,cfg-group4
  17. goodix,cfg-group0 = [
  18. E0
  19. 8C 0D 9A
  20. 0F
  21. 8D 5C 1E 3C 4C 1D 1D
  22.  
  23. 0A 0C 0E
  24. FF FF FF FF FF FF
  25. 0A 0C 0F FF FF FF FF FF FF
  26. FF FF FF FF FF FF FF FF
  27. C9 ];
  28. };
  29. };

此时已配置完毕

若出现触摸方向x、y反了,可以联系供应商改配置文件,也可以在头文件中打开交换x、y坐标的宏

宏生效后,会在触摸按下的函数 gtp_touch_down 中,交换x、y坐标

  1. #define GTP_CHANGE_X2Y 1 //swap x y
  1. #if GTP_CHANGE_X2Y
  2. GTP_SWAP(x, y);
  3. #endif

若出现触摸方向x、y镜像了,可以联系供应商改配置文件,也可以在触摸按下的函数 gtp_touch_down 中,修改x、y坐标

  1. // abs_x_max abs_y_max 分别是x y方向的最大值
  2. // x 方向镜像
  3. x = ts->abs_x_max - x;
  4. // y 方向镜像
  5. y = ts->abs_y_max - y;

若出现触摸不准,,触摸跳点等问题,则需要联系供应商查看硬件或者修改配置参数。

RK3288 GT触摸屏移植调试的更多相关文章

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

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

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

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

  3. RK3288 USB触摸屏无法使用,需要添加PID和VID

    RK3288  Android5.1 现象:USB 接口触摸屏插到板子上,触摸屏无法使用,有可能出现更奇葩的,同一套代码,有的板子可以用,有的板子不能用. 1.打开串口调试,插上触摸屏,读取触摸屏的 ...

  4. RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿

    CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...

  5. RK3288 HDMI配置和调试

    RK3288 最大输出分辨率为 3840x2160 HDMI 驱动代码位于 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 目录 1.设置默认输出 ...

  6. Android触摸屏配置调试

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

  7. rk3288 ov8858 camera移植

    平台:瑞芯的rk3288 SDK:4.4/5.0/5.1 作者:fulinux *****本文同意转载.只是请注明出处:http://blog.csdn.net/fulinus**** rk3288的 ...

  8. 触摸屏 adb调试

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

  9. [RK3288][Android6.0] 音频调试方法小结【转】

    本文转载自:http://blog.csdn.net/kris_fei/article/details/70053135 Platform: ROCKCHIPOS: Android 6.0Kernel ...

随机推荐

  1. P1083 借教室(差分+二分)

    P1083 借教室 第一眼:线段树. 然鹅懒得写. 正解:差分+二分. 显然订单合法的上线可以二分 然后差分数组维护一下.没了. #include<iostream> #include&l ...

  2. HDU6447 网络赛 YJJ's Salesman(DP + 线段树)题解

    思路:若用dp[i][j]表示走到(i,j)的最大值,那么dp[i][j] = max(dp[i - 1][j],dp[i][j - 1],dp[i - 1][j - 1] + v),显然O(n^2) ...

  3. HDU 4272 LianLianKan (状压DP+DFS)题解

    思路: 用状压DP+DFS遍历查找是否可行.假设一个数为x,那么他最远可以消去的点为x+9,因为x+1~x+4都能被他前面的点消去,所以我们将2进制的范围设为2^10,用0表示已经消去,1表示没有消去 ...

  4. exception disappear when forgot to await an async method

    https://github.com/aspnet/AspNetWebStack/issues/235 https://stackoverflow.com/questions/5383310/catc ...

  5. IAsyncResult接口

    #region 程序集 mscorlib.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewor ...

  6. ImportError: cannot import name 'izip & TypeError: 'float' object cannot be interpreted as an integer

    ImportError: cannot import name 'izip' 参考:https://codereview.stackexchange.com/questions/26271/impor ...

  7. Java字符串分割(转)

    java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...

  8. 数据模板--DataTemplate

    DataTemplate 的 "DataType" 通常就是 “ViewModel” ——视图模型(亦可不恰当称之为:数据模型) <DataTemplate DataType ...

  9. bzoj-5049-线段树

    5039: [Jsoi2014]序列维护 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 323  Solved: 193[Submit][Status ...

  10. UVA-820 Internet Bandwidth (最大流)

    题目大意:单源单汇无向网络求最大流. 题目分析:入门级别的题.但是ISAP在这儿好像不大好使?... 代码如下: # include<iostream> # include<cstd ...