今天遇到一个问题,手机tp的selftest 出错了,于是看了一下log:
12-13 01:33:42.486 391 0 I Kernel : <6>[ 107.303390] [Focal][Touch] ftxxxx_ftsscaptest_store : tp test failure
那么问题到底出在哪里呢
12-13 01:33:38.528 391 0 I Kernel : <6>[ 103.223817] hjptest--->RawData Test is NG. 出在这里
看代码跑到了这里test_lib.c
if( iTxNum == 0 || iRxNum == 0)
{
bTestReuslt = false;
FTS_DBG("Tx: %2d, Rx: %2d \n", iTxNum, iRxNum);
goto TEST_END;
}
也就是说这两个都是0
这两个在这里获取
iTxNum = GetTxNum();
focal_msleep(100);
iRxNum = GetRxNum();
然后
static short GetTxNum(void)
{
short txnum = 0;
unsigned char regvalue = 0x00;
if(WriteReg(0x00, 0x40) >= 0)
{
ReadReg(0x02,®value);
txnum = (short)regvalue;
}
else
{
return TX_NUM_MAX;
}
return txnum;
}
static short GetRxNum(void)
{
short rxnum = 0;
unsigned char regvalue = 0x00;
if(WriteReg(0x00, 0x40) >= 0)
{
ReadReg(0x03,®value);
rxnum = (short)regvalue;
}
else
{
return RX_NUM_MAX;
}
return rxnum;
}
直接读register的值但是没有i2c的通信错误所以应该就是值有问题,而其实这个值是fw写的,selftest就是把ic里的参数读出来和外面的excel的设定值比较,如果设定值卡的比较死,而tp硬件有点偏差就会出现fail,所以要放宽设定值