读书人

触摸屏驱动有关问题导致o地图 i2c tim

发布时间: 2012-09-07 10:38:15 作者: rapoo

触摸屏驱动问题导致omap i2c timeout

Ten4上使用了新的触摸屏novatek,中文名字叫做联咏科技吧。但是从一开始研发就有个问题,就是开机后,触摸屏无法使用,只有重启才行。

本来以为是手焊板子的问题。可是后来小批也有此问题。看来不得不解决了。

起初,怀疑触摸屏驱动有问题,但是对照其他触摸屏驱动,i2c操作部分没有什么区别。但就是一直报omap i2c timeout 。

网上搜了一下,TI的平台确实有这个问题,但是最新的上游代码,应该已经修复了这个问题。我加了一个上游提交被驳回的patch,还是会出现,概率为重启十几次就会出现一次。

触摸屏接在i2c 4上面,速率为400K,难道是速率太快?改为100K,还是会出问题。没有找到问题的根本。

再次考虑驱动的问题,暂时不能考虑硬件问题。

对比其他驱动,发现一个很大的问题。

在probe的时候

//Read and Print ChipID and test IC;
chipid = novatek_ts_ChipID(ts->client);
if(chipid < 0)
{
goto err_init_panel_fail;
}
else



client->irq = pdata->irq;
pdata->irq_init();
pdata->rst();

在没有reset设备的情况下,进行了i2c读写操作(novatek_ts_ChipID())。这个风险是很大的,不能假定开机后触摸屏已经处于准备好的状态,如果该设备没有准备好i2c发送和接收,则必然会timeout。

将下列代码移到novatek_ts_ChipID()前面

if (pdata->irq_init)
{
pdata->irq_init();
}
if (pdata->rst)
{
pdata->rst();
}

再测试了几十次,果然没有发现timeout的问题了。

读书人网 >移动开发

热点推荐