SSD_触控驱动集成参考
1. 驱动配置¶
1.1. 概述¶
SSD平台目前实现的触控IC驱动,都是通过I2C通讯的,到这里拿公版Goodix的驱动示例,实际情况请依据驱动方建议为准。
1.2. 驱动集成¶
触控驱动请触控IC厂家提供linux版本的驱动,触控驱动属于input子系统,驱动运行加载成功后,会生成设备节点/dev/input/eventX(一般如无其他input子系统存在,会生成的是event0)
-
将IC厂家提供的linux驱动添加到 kernel/drivers/input/touchscreen/ 目录下,如下图,在kernel/drivers/input/touchscreen/Makefile中添加驱动文件链接,并用一个配置CONFIG_TOUCHSCREEN_GOODIX控制
-
如下图,在kernel/drivers/input/touchscreen/Kconfig中添加CONFIG_TOUCHSCREEN_GOODIX,以便在kernel config中增加make menuconfig 配置开关
-
项目使用阶段,通过make menuconfig配置打开对应config,确保驱动Build in到kernel即可
2. DTS配置¶
2.1. DTS配置¶
查看硬件原理图,参考驱动源码,找到项目在用的*.dtsi文件,添加对应的设备树节点,以配置供驱动使用,配置流程如下:
-
根据驱动使用的name配置设备树节点的compatible name
-
触控IC的i2c slave addr
-
触控IC跟主芯片连接的RST/Interrupts pin脚
2.2. DTS配置示例¶
这里使用SSD20X平台的配置示例,除对应使用的*.dts文件需要自行根据使用的文件配置外,配置流程是通用的。
示例使用: kernel/arch/arm/boot/dts/infinity2m-ssc011a-s01a-display.dtsi (实际使用过程中请添加到项目使用到的dtsi中)
-
查看驱动源码,找到.of_match_table,并在dtsi中创建以该名字命名的设备节点
查看驱动源码:
配置的设备节点
-
根据触控IC厂家提供的I2C slave addr,配置好reg属性,这里goodix的I2C slave addr地址为0x5D (需要IC厂家确认)
-
设备树节点根据硬件连接,配置好goodix_rst/goodix_int 两个属性对应的pin脚(属性名字需要匹配驱动PAD_GPIO1/PAD_GPIO13 (需跟硬件实际匹配),reg配置的是触控I2C的
注意:触控设备最好不要有重复,如项目上新增了其他触控设备,请在config中关闭公版Default的Goodix驱动
3. STR配置¶
STR: Suspend To Ram
如需要支持STR,需要跟触控IC的FAE确认触控驱动中已经实现suspend/resume接口,否则STR后触控可能无法恢复导致失效
如需触控唤醒STR功能,则驱动code需在suspend之前先将触控对应中断enable成wake source:
4. 常见FAQ¶
-
驱动是否加载成功?
\rightarrow 确认对应的触控设备生成的设备节点(eg:/dev/input/eventX)
-
触控无反应,如何确认通讯是否成功?
\rightarrow 查看log有无对应I2C组通讯报错,有报错则可能跟触控IC通讯失败
\rightarrow 示波器抓I2C波形,看有无数据交互
-
如何查看触控版本信息?
\rightarrow 使用附件提供Demo:./Evtest /dev/input/eventX 2
-
触控不准确,会有什么原因?
\rightarrow 确保UI绘制的size跟触控的分辨率是匹配的
\rightarrow 使用附件提供Demo查看上报的坐标是否准确: ./Evtest /dev/input/eventX 0
\rightarrow 使用附件提供Demo模拟输入坐标,触发对应点击: ./Evtest /dev/input/eventX 1 X_position Y_position
5. Demo¶
-
Demo_Bin
-
Src_Code
编译方法: gcc evtest.c -o Evtest
-
使用说明
1. 读坐标:
./evtest /dev/input/event0 0 //设备节点选择的试 event0 后面一个0是读cmd
2. 写坐标:
./evtest /dev/input/event0 1 90 90 //设备节点选择的试 event0 后面一个1是写cmd,写cmd要带x,y坐标
3. dump dev info:
./evtest /dev/input/event0 2 //设备节点选择的试 event0 后面一个2是Dump Dev相关信息