SSD TouchScreen
使用参考


1. 驱动配置


1.1. 概述

SSD平台目前实现的触控IC驱动,都是通过I2C通讯的,到这里拿公版Goodix的驱动示例,实际情况请依据驱动方建议为准。


1.2. 驱动集成

触控驱动请触控IC厂家提供linux版本的驱动,触控驱动属于input子系统,驱动运行加载成功后,会生成设备节点/dev/input/eventX(一般如无其他input子系统存在,会生成的是event0)

1.将IC厂家提供的linux驱动添加到 kernel/drivers/input/touchscreen/ 目录下,如下图,在kernel/drivers/input/touchscreen/Makefile中添加驱动文件链接,并用一个配置CONFIG_TOUCHSCREEN_GOODIX控制起来

2.如下图,在kernel/drivers/input/touchscreen/Kconfig中添加CONFIG_TOUCHSCREEN_GOODIX,以便在kernel config中增加make menuconfig 配置开关

3.项目使用阶段,通过make menuconfig配置打开对应config,确保驱动Build in到kernel即可


2. Dts配置


2.1. DTS配置

查看硬件原理图,参考驱动源码,找到项目在用的*.dtsi文件,添加对应的设备树节点,以配置供驱动使用,配置流程如下:

a.根据驱动使用的name配置设备树节点的compatible name

b.触控IC的i2c slave addr

c.触控IC跟主芯片连接的RST/Interrupts pin脚


2.2. DTS配置示例

这里使用SSD20X平台的配置示例,除对应使用的*.dts文件需要自行根据使用的文件配置外,配置流程是通用的。

示例使用: kernel/arch/arm/boot/dts/infinity2m-ssc011a-s01a-display.dtsi (实际使用过程中请添加到项目使用到的dtsi中)

a.查看驱动源码,找到.of_match_table,并在dtsi中创建以该名字命名的设备节点

查看驱动源码:

配置的设备节点:

b.根据触控IC厂家提供的I2C slave addr,配置好reg属性,这里goodix的I2C slave addr地址为0x5D (需要IC厂家确认)

c.设备树节点根据硬件连接,配置好goodix_rst/goodix_int两个属性对应的pin脚(属性名字需要匹配驱动PAD_GPIO1/PAD_GPIO13(需跟硬件实际匹配),reg配置的是触控I2C的

注意:触控设备最好不要有重复,如项目上新增了其他触控设备,请在config中关闭公版Default的Goodix驱动。


3. Str配置


STR: Suspend To Ram

3.1. STR相关注意点

如需要支持STR,需要跟触控IC的FAE确认触控驱动中已经实现suspend/resume接口,否则STR后触控可能无法恢复导致失效。

如需触控唤醒STR功能,则驱动code需在suspend之前先将触控对应中断enable成wake source:


4. 常见FAQ


Q1: 驱动是否加载成功?

\rightarrow 确认对应的触控设备生成的设备节点(eg:/dev/input/eventX)

Q2: 触控无反应,如何确认通讯是否成功?

\rightarrow 查看log有无对应I2C组通讯报错,有报错则可能跟触控IC通讯失败

\rightarrow 示波器抓I2C波形,看有无数据交互

Q3: 如何查看触控版本信息?

\rightarrow 使用附件提供Demo:./Evtest /dev/input/eventX 2

Q4: 触控不准确,会有什么原因?

\rightarrow 确保UI绘制的size跟触控的分辨率是匹配的

\rightarrow 使用附件提供Demo查看上报的坐标是否准确: ./Evtest /dev/input/eventX 0

\rightarrow 使用附件提供Demo模拟输入坐标,触发对应点击: ./Evtest /dev/input/eventX 1 X_ position Y_position


5. Demo


5.1. Demo code & 使用说明

Demo_Bin:

Evtest evtest.c

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,后面一个2Dump Dev相关信息