ilitek驱动移植问题汇总
1、 打开手势模式
a、首先, .h文件中打开宏:#define ENABLE_GESTURE ENABLE
b、然后,全局变量ilits->gesture = 1打开手势模式 ,ilits->gesture = 0 关闭手势模式。需要客户创建节点,然后根据上层
功能设定打开或关闭
2、如何判断TP驱动是否打开了手势模式
按power键休眠时需要看到跑ili_sleep_handler休眠函数(没有跑休眠函数请查休眠函数有没有注册正确),并且要看到Switch to Gesture mode的log,如下参考:
3、 手势无法唤醒怎么办?
a、 上面两步判断驱动是否打开手势模式
b、 显示有没有下28 10 ?
c、 测量进入手势模式的时序是否正常?
d、 固件手势模式是否正常?(可用单体验证排除固件问题)
4、 休眠后功耗高怎么办?
a、 显示有没有下28 10?
b、 测量进入sleep模式的时序是否正常?
c、 固件sleep模式是否能正常下电?(可用单体验证排除固件问题)
d、log确认TP驱动有没有下深度睡眠的cmd,如下图log参考要看到01,02,03的cmd

5、 驱动加载失败,kernel log中有看到”Dummy check incorrect”或者“ Not found ilitek chip”, 如下图怎么办?


a、 测量确认开机时序是正常的
b、 测量确认spi或i2c是否有波形(没有波形,平台总线配置原因可能性大。有波形,需要逻辑分析仪进一步确认)
c、 根据spi或者i2c timing spec确认信号质量
6、 i2c报错怎么办?
a、 测量确认报错时的时序
b、 测量确认i2c是否有波形(没有波形,平台原因可能性大。有波形,需要逻辑分析仪进一步确认)
c、 根据i2c timing spec确认信号质量
7、固件反复触发recovery,如下图

a、确认驱动版本号DRIVER_VERSION 大于等于3.0.12.0
b、确认ili固件没有用错,相同固件用单体模组在tool上跑是正常的
c、确认显示参数用对了,显示timing测量正常(一定要测量)
d、确认完整开机时序或休眠唤醒时序(开机出现的问题就测开机时序,休眠唤醒出现的问题就测休眠唤醒时序)
8、i2c的项目,无触摸,每隔1秒左右来一次中断,测量没有SX

a、确认显示参数用对了,显示timing测量正常(一定要测量)
b、确认单体固件是好的
c、确认时序
9、充电器状态通知固件
需要客户根据系统状态调用下面两个函数,如果是上层调用需要客户自己创建节点
ili_ic_func_ctrl_export ("plug", DISABLE); //充电器插入
ili_ic_func_ctrl_export ("plug", ENABLE); //充电器拔出
10、NFC状态通知固件
需要客户根据系统状态调用下面4个函数,如果是上层调用需要客户自己创建节点
ili_ic_func_ctrl_export ("nfc", 0x00); // NFC OFF
ili_ic_func_ctrl_export ("nfc", 0x01); // NFC ON
ili_ic_func_ctrl_export ("nfc", 0x02); //RF OFF
ili_ic_func_ctrl_export ("nfc", 0x04); //RF ON
11、手套模式通知固件
需要客户根据系统状态调用下面两个函数,如果是上层调用需要客户自己创建节点
ili_ic_func_ctrl_export ("glove", DISABLE) /* 关闭手套模式 /
ili_ic_func_ctrl_export ("glove", ENABLE) / 打开手套模式 */
12、无触问题分析:
复现问题后:
a.开机驱动加载log以及出问题当下的log
b.若没打开轨迹,则打开轨迹显示功能(用adb 可以打开),好确认是真没有报点还是报鬼点
显示触摸轨迹
adb shell settings put system show_touches 1
adb shell settings put system pointer_location 1
c.getevent -pl看input注册信息是否正常
d.getevent -lrt 命令看下触摸时是否有内容输出
e.打开debug log(cat /proc/ilitek/debug_level 显示Enable),然后触摸看log 看是否有内容输出
f.若上面做完都没进展,看起来是触摸时平台这边是没认到中断的,可以切到debug mode(echo switchdebugmode > /proc/ilitek/ioctl)看下,确认log是否有输出,若有输出可再切到demo mode(echo switchdemomode > /proc/ilitek/ioctl)看结果
g.示波器抓TP扫描波形
h.echo getinfo > /proc/ilitek/ioctl 看log,确认是否能读到相关信息
i.若debug mode也没输出,可以先读一下DDI寄存器(这是之前车载项目去读ASIL信息)
j.echo hwreset > /proc/ilitek/ioctl 看能否恢复(若hwreset pin没有设定或者有问题,可用这个cmd测试:echo icwholereset > /proc/ilitek/ioctl)//这个是reset操作,执行前确认是否要做此操作确认
13、整机产测方法:
产测节点cat /proc/ilitek/mp_lcm_on_test
产测ini卡控文件存放路径和名称 /sdcard/mp.ini -------如果宏GENERIC_KERNEL_IMAGE是ENABLE的,mp.ini请放在request_firmware的系统默认目录(可能是/vendor/firmware/下面,也可能是其它,需要客户确认)
详细产测结果保存文件路径 /sdcard/ilitek_mp_lcm_on_log -------如果GENERIC_KERNEL_IMAGE是ENABLE的,需要cat /proc/ilitek/show_mp_test_result > /sdcard/mptest.csv 来保存产测结果
14、proximity功能实现方法
a、tp 驱动ili_ic_func_ctrl("proximity", 0x01)下 0x01 0x10 0x01 固件开启靠近远离探测(客户自己创建节点,打电话时开启,或者根据自己的需求开启)(前期客户没创建节点时,可下命令echo “proxfacemode,0x02” > /proc/ilitek/ioctl代替)

b、脸靠近,固件上报Near 。脸远离,固件上报Far(log中可以看到,如果ilits->prox_face_mode == PROXIMITY_SUSPEND_RESUME(休眠唤醒的方式,客户决定),会跑ili_report_proximity_mode里的log,如果ilits->prox_face_mode = PROXIMITY_BACKLIGHT(只灭背光的方式,客户决定),会跑proxmity face status : Near/Far)

log见下面参考:

C、Tp驱动上报给系统靠近或者远离的状态(需要客户实现)
D、系统收到near,关闭背光或者休眠(哪种方式由客户决定,怎么操作由客户决定)
E、系统收到far,打开背光或者唤醒(哪种方式由客户决定,怎么操作由客户决定)
F、tp 驱动ili_ic_func_ctrl("proximity", 0x00)下 0x01 0x10 0x00 固件关闭靠近远离探测(客户自己创建节点,关闭电话时调用,或者根据自己的需求调用)(前期客户没创建节点时,可下命令echo “proxfacemode,0x00” > /proc/ilitek/ioctl代替)


浙公网安备 33010602011771号